【发布时间】:2011-11-15 10:16:19
【问题描述】:
我有一个 ~10M 记录 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 内置生成器的东西?
this question 的答案似乎表明内存消耗不是预期的。
【问题讨论】:
-
我有一些非常相似的东西,除了它产生“东西”。比所有其他解决方案效果更好
-
不是 Thing.id > lastThingID 吗?什么是“行”?
标签: python mysql sqlalchemy