Получение SQL из набора запросов Django [дубликат]


этот вопрос уже есть ответ здесь:

Как получить SQL, который Django будет использовать в базе данных из объекта QuerySet? Я пытаюсь отладить какое-то странное поведение, но я не уверен, какие запросы идут в базу данных. Спасибо помощь.

5 238

5 ответов:

вы печатаете запрос

просто:

print my_queryset.query

например:

from django.contrib.auth.models import User
print User.objects.filter(last_name__icontains = 'ax').query

следует также отметить, что если у вас есть DEBUG = True, то все ваши запросы регистрируются, и вы можете получить их, обратившись к соединению.запросы:

from django.db import connections
connections['default'].queries

The панель инструментов отладки django проект использует это, чтобы представить запросы на странице в аккуратном порядке.

принятый ответ не работает для меня при использовании Django 1.4.4. Вместо необработанного запроса была возвращена ссылка на объект запроса:<django.db.models.sql.query.Query object at 0x10a4acd90>.

запрос был возвращен следующим образом:

>>> queryset = MyModel.objects.all()
>>> queryset.query.__str__()

это промежуточное программное обеспечение будет выводить каждый SQL-запрос на консоль, с подсветкой цвета и временем выполнения, это было неоценимо для меня в оптимизации некоторых сложных запросов

http://djangosnippets.org/snippets/290/

в качестве альтернативы другим ответам,django-devserver выводит SQL на консоль.