【发布时间】:2016-10-18 21:56:46
【问题描述】:
例如我们有一个存储LONGBLOB对象的表:
class MyEntity(_base):
id = Column('ID', Integer, primary_key=True)
metadata = Column('META', String(512), nullable=False)
bigData = deferred(Column('BIG_DATA', LONGBLOB, nullable=False))
LONGBLOB 标记为延迟的列,即仅在访问特定对象的此属性时加载。
我需要从数据库中查询对象列表并遍历集合:
entities = dbSession.query(MyEntity).all()
for entity in entities:
...
entity.bigData # load BLOB from the database and do smth with data
...
在这个循环中,所有的 BLOB 都将从数据库中加载,内存将被耗尽。我需要一种在每个周期结束时清理内存的方法。从会话中删除对象并完全从内存中删除并不方便......
如何清理对象的特定属性 (LONGBLOB) 但不从会话中删除对象?
【问题讨论】:
-
你试过
entity.bigData = None
标签: python memory sqlalchemy deferred