Обеспечивает ли итератор улучшение при использовании вместе с values_list? - PullRequest
0 голосов
/ 20 июня 2020

Недавно я увидел код, который использовался вместе iterator() и values_list(). Имеет ли смысл использовать их обоих вместе? Улучшит ли это скорость или использование памяти?

Пример кода:

Customer.objects.values_list("pk", flat=True).iterator()

1 Ответ

0 голосов
/ 20 июня 2020

value_list() возвращает QuerySet, который возвращает словари [docs] .

QuerySets ленивы - процесс создания QuerySet не задействует никаких операций с базой данных. Вы можете складывать фильтры вместе в течение всего дня, и Django фактически не будет выполнять запрос, пока QuerySet не будет оценен [docs] .

Вы можете увидеть это , чтобы проверить, когда оценивается queryset.

Фактически, создавая queryset django, не попадает в базу данных, пока он не будет оценен (чем-то вроде iterator) .

as Iterator() чтение результатов без кеширования приведет к повышению производительности в ситуациях, когда нам нужен только один доступ к объектам, и это не связано с типом querysets

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...