SQLAlchemy 2.0 文档
表达式序列化扩展¶
用于 SQLAlchemy 查询结构的序列化器/反序列化器对象,允许“上下文”反序列化。
传统功能
序列化扩展是传统的,不应用于新开发。
任何基于 sqlalchemy.sql.* 或 sqlalchemy.orm.* 的 SQLAlchemy 查询结构都可以使用。结构中引用的映射器、表、列、会话等不会以序列化形式持久化,而是会在反序列化时重新与查询结构关联。
警告
序列化扩展使用 pickle 来序列化和反序列化对象,因此 python 文档 中提到的相同安全注意事项适用。
使用方法与标准 Python pickle 模块几乎相同
from sqlalchemy.ext.serializer import loads, dumps
metadata = MetaData(bind=some_engine)
Session = scoped_session(sessionmaker())
# ... define mappers
query = Session.query(MyClass).
filter(MyClass.somedata=='foo').order_by(MyClass.sortkey)
# pickle the query
serialized = dumps(query)
# unpickle. Pass in metadata + scoped_session
query2 = loads(serialized, metadata, Session)
print query2.all()
与使用原始 pickle 时相同的限制适用;映射的类本身必须是可 pickle 的,这意味着它们可以从模块级命名空间导入。
序列化模块仅适用于查询结构。它不需要用于
用户定义类的实例。在典型情况下,这些实例不包含对引擎、会话或表达式结构的引用,可以直接序列化。
要完全从序列化结构加载的表元数据(即在应用程序中尚未声明)。可以使用常规的 pickle.loads()/dumps() 来完全转储任何
MetaData
对象,通常是在之前某个时间点从现有数据库中反射出来的对象。序列化模块专门用于相反的情况,即表元数据已经存在于内存中。
对象名称 | 描述 |
---|---|
dumps(obj[, protocol]) |
|
loads(data[, metadata, scoped_session, engine]) |
|
- class sqlalchemy.ext.serializer.Deserializer¶
-
类签名
class
sqlalchemy.ext.serializer.Deserializer
(_pickle.Unpickler
)-
method
sqlalchemy.ext.serializer.Deserializer.
get_engine()¶
-
method
sqlalchemy.ext.serializer.Deserializer.
persistent_load(id_)¶
-
method
- class sqlalchemy.ext.serializer.Serializer¶
-
类签名
class
sqlalchemy.ext.serializer.Serializer
(_pickle.Pickler
)-
method
sqlalchemy.ext.serializer.Serializer.
persistent_id(obj)¶
-
method
- function sqlalchemy.ext.serializer.dumps(obj, protocol=5)¶
- function sqlalchemy.ext.serializer.loads(data, metadata=None, scoped_session=None, engine=None)¶
flambé! 火龙和 炼金术士 图像设计由 Rotem Yaari 创建并慷慨捐赠。
使用 Sphinx 7.2.6 创建。文档最后生成时间:2024 年 11 月 8 日星期五东部时间上午 08:41:19