私のプログラムでは、非常に大きなテーブル(メモリストレージを超えています)を読み取り、テーブルから読み取っていくつかの作業を行うために次の構造を作成する必要があります。selectをイテレータスタイルに書き直すことは非常に可能ですが、それでも次のような基本構造があります。
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
私がやりたいのは、不格好な状態変数をあまり持ち運ばないものを用意することです。この混乱をクリーンアップする方法のアイデアはありますか?
参考までに-私もこれを試しましたが、これ以上気に入っているかどうかはわかりません。
@staticmethod
def qiter(q, start=0, batch=25000):
obj = True
while obj:
for obj in q.limit(batch).offset(start):
yield obj
start += batch