表达式序列化程序扩展
优质
小牛编辑
129浏览
2023-12-01
用于SQLAlchemy查询结构的序列化程序/反序列化程序对象,允许“上下文”反序列化。
任何基于sqlAlchemy.sql的sqlAlchemy查询结构。 或sqlacalchemy.orm。 可以使用。结构引用的映射器、表、列、会话等不以序列化形式持久化,而是在反序列化时与查询结构重新关联。
用法与标准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
对象,通常是在以前某个时间点从现有数据库反映出来的对象。序列化程序模块专门针对相反的情况,其中表元数据已经存在于内存中。
Object Name | Description |
---|---|
Deserializer(file[, metadata, scoped_session, engine]) | |
dumps(obj[, protocol]) | |
loads(data[, metadata, scoped_session, engine]) | |
Serializer(*args, **kw) |
- function sqlalchemy.ext.serializer.Deserializer(file, metadata=None, scoped_session=None, engine=None)¶
- function sqlalchemy.ext.serializer.Serializer(*args, **kw)¶
- function sqlalchemy.ext.serializer.dumps(obj, protocol=4)¶
- function sqlalchemy.ext.serializer.loads(data, metadata=None, scoped_session=None, engine=None)¶