我有一个包含约10万条记录的MySQL表,使用SqlAlchemy进行接口交互。 我发现对于这个表的大型子集的查询将会消耗太多内存,尽管我认为我正在使用一种内置的生成器来智能地获取数据集的小块:
for thing in session.query(Things):
analyze(thing)
为了避免这种情况,我发现我必须构建自己的迭代器,分块处理数据:lastThingID = None
while True:
things = query.filter(Thing.id < lastThingID).limit(querySize).all()
if not rows or len(rows) == 0:
break
for thing in things:
lastThingID = row.id
analyze(thing)
这是正常的吗?对于SA内置发生器,我是否遗漏了什么?
回答这个问题的答案似乎表明不应该期望内存消耗。