在SQLAlchemy中,BLOB是一种用于存储二进制数据的数据类型。以下是一个简单的示例,展示了如何在SQLAlchemy中使用BLOB类型:
首先,确保已经安装了SQLAlchemy库。如果没有,请使用以下命令安装:
pip install sqlalchemy
接下来,创建一个简单的表,其中包含一个BLOB类型的列:
from sqlalchemy import create_engine, Column, Integer, String, LargeBinary
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
avatar = Column(LargeBinary)
engine = create_engine('sqlite:///users.db')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
在这个示例中,我们创建了一个名为User
的类,其中包含三个列:id
、name
和avatar
。avatar
列的类型为LargeBinary
,这是SQLAlchemy中用于表示BLOB的类型。
接下来,我们可以向表中添加一些用户,并将他们的头像存储为BLOB数据:
import io
import requests
# 下载一张图片
url = 'https://example.com/avatar.png'
response = requests.get(url)
avatar_data = response.content
# 将用户添加到数据库
new_user = User(name='John Doe', avatar=avatar_data)
session.add(new_user)
session.commit()
在这个示例中,我们从一个URL下载了一张图片,并将其存储为二进制数据。然后,我们创建了一个新的User
对象,并将其添加到数据库中。注意,我们将图片数据存储在avatar
列中。
最后,我们可以从数据库中查询用户的头像,并将其保存为一个文件:
# 查询用户
user = session.query(User).filter_by(name='John Doe').first()
# 将头像保存为文件
with open('avatar.png', 'wb') as f:
f.write(user.avatar)
在这个示例中,我们从数据库中查询了名为John Doe
的用户,并将其头像保存为一个文件。注意,我们使用了wb
模式打开文件,以便以二进制格式写入数据。
领取专属 10元无门槛券
手把手带您无忧上云