在SQLAlchemy中使用BLOB的示例

在SQLAlchemy中使用BLOB的示例,sqlalchemy,blob,Sqlalchemy,Blob,有人举过如何在SQLAlchemy中使用BLOB的例子吗 问候,, Steve来自sqlalchemy导入* 从sqlalchemy.orm导入映射器,sessionmaker 导入操作系统 引擎=创建引擎('sqlite://',echo=True) 元数据=元数据(引擎) 样本=表格( “样本”,元数据, 列('id',整数,主键=True), 列('lob',二进制), ) 类示例(对象): 定义初始化(自身,lob): self.lob=lob 制图员(样本,样本) metadata.c

有人举过如何在SQLAlchemy中使用BLOB的例子吗

问候,, Steve

来自sqlalchemy导入*
从sqlalchemy.orm导入映射器,sessionmaker
导入操作系统
引擎=创建引擎('sqlite://',echo=True)
元数据=元数据(引擎)
样本=表格(
“样本”,元数据,
列('id',整数,主键=True),
列('lob',二进制),
)
类示例(对象):
定义初始化(自身,lob):
self.lob=lob
制图员(样本,样本)
metadata.create_all()
会话=会话生成器(引擎)()
#创建新对象
blob=os.Uradom(100000)
obj=样本(lob=blob)
会话.添加(obj)
session.commit()
obj_id=obj.id
session.expunge_all()
#检索现有对象
obj=session.query(Sample.get)(obj_id)
assert obj.lob==blob
来自sqlalchemy导入*
从sqlalchemy.orm导入sessionmaker
从sqlalchemy.ext.declarative导入声明性基础
从结构导入*
_DeclarativeBase=declarative_base()
类MyTable(_DeclarativeBase):
__tablename_uu='mytable'
id=列(整数,序列('my_table_id_seq'),主键=True)
my_blob=列(blob)
DB_NAME=sqlite:///C:/BlobbingTest.db'
db=创建引擎(db\U名称)
#self.\uu db.echo=True
_DeclarativeBase.metadata.create_all(db)
Session=sessionmaker(bind=db)
会话=会话()
添加(MyTable(my_blob=pack('H',365)))
l=[n+1表示X范围内的n(10)]
session.add(MyTable(my_blob=pack('H'*len(l),*l)))
session.commit()
query=session.query(MyTable)
对于查询中的mt.all():
打印解包('H'*(len(mt.my\u blob)/2),mt.my\u blob)

从文档二进制文件中可以看出:

classsqlalchemy.dialogs.mysql.BLOB(长度=None)
base: sqlalchemy.types.LargeBinary

SQL BLOB类型

\uuuu init\uuuu(长度=无)
构造一个大型二进制类型

参数:length–可选,在DDL中使用的列的长度 语句,用于接受长度的BLOB类型(即MySQL)。信息技术 不生成长度二进制/变量二进制类型-使用 BINARY/VARBINARY类型专门针对这些类型。可以安全地省略 如果没有,将发布创建表。某些数据库可能需要 在DDL中使用的长度,并且在创建 表DDL已发布


为什么不使用大二进制文件呢

摘录自:


我相信这可能会对您有所帮助。

我想看一个没有orm的例子。我想在这种情况下,您需要以某种方式包装传递给Connection.execute.com的blob值。使用pack的优点+1请考虑避免使用导入*,这样人们就不必猜测/搜寻像pack这样的对象来自何处。这些pack/unpack来自何处?
class sqlalchemy.types.LargeBinary(length=None)
A type for large binary byte data.

The LargeBinary type corresponds to a large and/or unlengthed binary type for the target platform, such as BLOB on MySQL and BYTEA for PostgreSQL. It also handles the necessary conversions for the DBAPI.