Получение SQL из набора запросов Django [дубликат]
этот вопрос уже есть ответ здесь:
Как получить SQL, который Django будет использовать в базе данных из объекта QuerySet? Я пытаюсь отладить какое-то странное поведение, но я не уверен, какие запросы идут в базу данных. Спасибо помощь.
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-запрос на консоль, с подсветкой цвета и временем выполнения, это было неоценимо для меня в оптимизации некоторых сложных запросов
в качестве альтернативы другим ответам,django-devserver выводит SQL на консоль.