通常のクエリーセットまたはイテレータークエリーセットメソッドは、データセット全体を評価してワンショットで返します。クエリーセットデータを1つずつ取得する
例えば、これを取る。どちらの方法で
my_objects = MyObject.objects.all()
for rows in my_objects: # Way 1
for rows in my_objects.iterator(): # Way 2
質問
をすべての行がsingle-go.Isクエリセット行ができることdjagoの任意の方法でフェッチされデータベースから1つずつ取り出されます。
なぜこの奇妙な要件
現時点で私のクエリがフェッチすることができますn行を言いますが、いつか私がPython and Django OperationalError (2006, 'MySQL server has gone away')を取得します。
ので、このための回避策を持っているために、私は現在、そこに任意のネイティブまたは作り付けの方法があるか、最初の場所でも、論理的な、私の質問の場合logic.Soは思っていたループ奇妙なwhile
を使用しています! :)
私は、もちろん、これは間違いなく周り掘っている間、私が考えた一つの方法です:) – Sayse
好ましいであろうこと、あなたはここで、実際の問題を修正するに見ていると仮定していますneat.I午前に見えます制限なしでジャンゴ自体に他の*ネイティブ*の方法があるのだろうか?実際の問題としては、それはdjangoのバージョンに関連していますが、プロジェクト全体がそれに基づいているので、私はそれについて何もできません..... – NoobEditor
@NoobEditor - これはネイティブと同じだと思います。これは、実行するクエリが変更されるためです。 dbに対して複数のクエリを実行しますが、N個の結果のみを一度に返します。もう1つのオプションは、実際に返す必要があるものを見て、それらのフィールドを返すために 'values'を使うことです。 (私は私の例で一度に5を取り出していますが、これは一度に多くのことを処理できると思っています) – Sayse