У меня есть применение Python/Django, которое управляет довольно большим количеством заявлений SQL. Для отладки целей я думал, что должен создать простой вид для меня, который просто перечисляет все заявления SQL, которыми управляли.
Согласно документации, этого кодекса должно быть достаточно, чтобы сделать это:
from django.db import connection
connection.queries
пока ОТЛАДКА Верна.
Однако это ничего не дает мне. ОТЛАДКА несомненно установлена в Истинный. В каком контексте сохранен этот connection.queries? Я злой, я должен быть в состоянии выполнить одну страницу, которая выполняет много заявлений SQL, и затем просто переключитесь на представление http://myserver/sql, которое я создал, и см. те заявления SQL там, правильно? Используя ту же сессию браузера, конечно...
Я действительно проверял, управляли ли db.reset_queries () куда-нибудь в кодексе, появляется, это не.
Какие-либо идеи, почему connection.queries всегда пуст?
Бен прав, что вы видите только запросы из текущего процесса. Вы можете использовать его внутри одного вида или в консоли, но не между видами.
Лучший способ увидеть, какие запросы выполняются в ваших представлениях - это использовать панель инструментов Django debug toolbar.
Я думаю, что эти запросы хранятся в памяти, и не передаются между процессами, поэтому у вас будет доступ только к запросам, сделанным по текущему процесс.
Если я попробую код, который вы вставили в ./ Management.py Shell
сеанс, я вижу только запросы, которые я ранее сделал в этом сеансе оболочки.
Если я пройдут запросов
с вида в контекст шаблона и показать его в шаблоне, я вижу только запросы, сделанные в этом представлении. Это использует сервер Dev, хотя.
Я предполагаю, но не проверил - то, что если вы используете это в среде, где у вас есть один процесс, обслуживающий несколько запросов, вы бы увидели больше запросов на каждый запрос.