«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу проверить SQL-запросы, выполняемые Django?

Как я могу проверить SQL-запросы, выполняемые Django?

Опубликовано 11 ноября 2024 г.
Просматривать:364

How Can I Inspect the SQL Queries Executed by Django?

Как проверять SQL-запросы в Django

Хотите узнать, какие операторы SQL запускает Django при выполнении запроса? Ответ прост:

1 Найдите ответ в документации
В разделе FAQ документации Django есть простой ответ:

2. Доступ к базе данных Connections
может получить доступ к SQL через django.db.connection.queries. Список запросов:

from django.db import connection
print(connection.queries)

3. Просмотр объекта Queryset
Объект Queryset имеет атрибут запроса, который содержит запрос, который необходимо выполнить:

print(MyModel.objects.filter(name="my name").query)

Примечание: вывод запроса не является допустимым SQL. Причина в следующем:

«Django никогда не интерполирует параметры: он отправляет запрос и параметры отдельно в адаптер базы данных, который выполняет соответствующие операции».

(из отчета об ошибке Django № 17741)

Поэтому не отправляйте выходные данные запроса непосредственно в базу данных.

Сбросить запросы
Если вам нужно сбросить запрос, например, чтобы увидеть количество запросов, выполненных за определенный период времени, вы можете использовать django.db.reset_queries:

from django.db import reset_queries
from django.db import connection

reset_queries()
# 运行你的查询
print(connection.queries)
>>> []
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3