Wiem, że regularne zapytania lub metody kwerend iteracji oceniają i zwracają cały zestaw danych w jednym ujęciu.Pobieranie danych zestawów kwerend pojedynczo
na przykład wziąć to:
my_objects = MyObject.objects.all()
for rows in my_objects: # Way 1
for rows in my_objects.iterator(): # Way 2
Pytanie
w obu metodach wszystkie wiersze są pobierane w ciągu single-go.Is jakiś sposób w djago że wiersze mogą być queryset pobierane jeden po drugim z bazy danych.
Dlaczego ten dziwny wymóg
Obecnie moja kwerenda pobiera pozwala mówi n wierszy, ale kiedyś dostanę Python and Django OperationalError (2006, 'MySQL server has gone away').
więc mieć obejście tego, Obecnie używam dziwne while
zapętlenie logic.So zastanawiałem się, czy istnieje jakikolwiek rodzimy lub wbudowana metoda jest moje pytanie czy nawet logiczne na pierwszym miejscu !! :)
Ja zakładając masz spojrzał na ustalenie rzeczywistego problemu tutaj, że byłoby oczywiście korzystne :) – Sayse
jest to z pewnością jeden sposób mam uwzględnione podczas kopania wokół, wygląda neat.I am zastanawiasz się, czy istnieje inny * rodzimy * sposób w samym Django bez ograniczeń? Jeśli chodzi o Rzeczywisty problem, to jest on związany z wersją django, ale ponieważ cały projekt jest na nim oparty, nie mogę nic z tym zrobić ... – NoobEditor
@NoobEditor - Wydaje mi się, że dotyczy to tak natywnego, jak to tylko możliwe, ponieważ zmodyfikuje to zapytanie, które wykonujesz. Nadal będziesz wykonywać wiele zapytań na db, ale tylko zwracając N wyników naraz. Inną opcją jest sprawdzenie, co faktycznie powinieneś zwrócić i użycie "wartości" do zwrócenia tych pól. (Zwróć też uwagę, że podczas mojego przykładu oglądam tylko 5 w tym samym czasie, wyobrażam sobie, że możesz obsłużyć o wiele więcej niż to jednocześnie) – Sayse