@FreeDobby
Свободный Добби

Count of filter?

При выполнении запроса Model.objects.filter(...).count() сколько будет сделано запросов? Будет ли это SELECT COUNT FROM WHERE или же он сначала вернет все объекты массивом и посчитает их средствами питона? И еще чисто для проверки как вывести содержимое этого запроса в sql виде? Как обычно query не выходит, count же int возвращает.
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
@deliro
count() всегда делает запрос, причём только один. len() - не всегда делает запрос. Содержимое SQL запроса count можно увидеть только через connection:
from django.db import connection
print(connection.queries)

Если нужно узнать количество объектов в выборке И итерироваться по ней - всегда используй len(), он работает следующим образом:
  1. Если выборка ещё не в кэше (SQL не запрашивался) - выполняет запрос
  2. Возвращает len() QuerySet'а


Если нужно только узнать количество - используй count()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sim3x
@sim3x
Апп для дебага
django-debug-toolbar.readthedocs.io/en/stable/pane...

Когда нужно в одном месте посмотреть - иногда примеры идут на питон2
stackoverflow.com/questions/971667/django-orm-how-...

Суть вопроса
https://docs.djangoproject.com/en/1.10/ref/models/...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы