Можно ли напечатать запрос, который генерирует Django ORM?
Скажем, я выполняю следующее утверждение: Model.objects.filter(name='test')
Как мне увидеть сгенерированный SQL-запрос?
django
django-models
django-orm
Jarvis
источник
источник
prefetch_related
есть показывает 2 запроса? Я вижу только 1.<django.db.models.sql.query.Query object
Вы также можете использовать python logging для регистрации всех запросов, сгенерированных Django. Просто добавьте это в ваш файл настроек.
Другой способ, если приложение генерирует вывод html - можно использовать панель отладки django .
источник
'level': 'DEBUG'
под'django.db'
.Вы можете вставить этот код в вашу оболочку, которая будет отображать все запросы SQL:
источник
Пока
DEBUG
на:Для отдельного запроса вы можете сделать:
источник
query
возвращаетQuery
объект начиная с версии Djagno 1.2, который не имеетas_sql
атрибута.Может быть, вам стоит взглянуть на
django-debug-toolbar
приложение, оно будет регистрировать все запросы для вас, отображать информацию о профилировании для них и многое другое.источник
Надежное решение будет иметь журнал вашей базы данных в файл, а затем
источник
Если вы используете маршрутизацию базы данных, возможно, у вас более одного соединения с базой данных. Подобный код позволяет вам видеть соединения в сеансе. Вы можете сбросить статистику так же, как с одним соединением:
reset_queries()
...
источник
Вы можете использовать Django debug_toolbar для просмотра SQL-запроса. Пошаговое руководство по использованию debug_toolbar:
Установите Debug_toolbar
Отредактируйте файл settings.py и добавьте debug_toolbar в Установленные приложения, это следует добавить ниже в 'django.contrib.staticfiles'. Также добавьте debug_toolbar в Middleware.
Settings.py =>
создайте новый список с именем INTERNAL_IPS в файле settings.py
Settings.py => создать новый список в конце файла settings.py и добавить следующий список:
Это позволит отладке работать только на внутреннем сервере разработки
Отредактируйте файл urls.py в #Project и добавьте следующий код:
применить миграцию и запустить сервер снова
Вы увидите надстройку на своей веб-странице по адресу 127.0.0.1, и если вы установите флажок SQL Query, вы также сможете увидеть время выполнения запроса.
источник