在我的程序中,我需要读取一个非常大的表(它超出了内存存储空间),并且自己写下面的构造来从表中读取并做一些工作。虽然我知道这是很可能选择重新写入到一个迭代器风格仍然有其遵循的基本结构:更好的方法来控制数据库查询的流程
found = True
start = 0
batch = 2500
while found:
found = False
for obj in Channel.select().limit(batch).offset(start):
found = True
# do some big work...
start += batch
我想这样做是有一些不携带尽可能多klunky状态变量。如何清理这一点混乱的想法?
仅供参考 - 我已经试过这为好,不知道我喜欢它更好:
@staticmethod
def qiter(q, start=0, batch=25000):
obj = True
while obj:
for obj in q.limit(batch).offset(start):
yield obj
start += batch