在我的程序中,我需要讀取一個非常大的表(它超出了內存存儲空間),並且自己寫下面的構造來從表中讀取並做一些工作。雖然我知道這是很可能選擇重新寫入到一個迭代器風格仍然有其遵循的基本結構:更好的方法來控制數據庫查詢的流程
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