Используя django.db.connection.queries

У меня есть применение Python/Django, которое управляет довольно большим количеством заявлений SQL. Для отладки целей я думал, что должен создать простой вид для меня, который просто перечисляет все заявления SQL, которыми управляли.

Согласно документации, этого кодекса должно быть достаточно, чтобы сделать это:

    from django.db import connection
    connection.queries

пока ОТЛАДКА Верна.

Однако это ничего не дает мне. ОТЛАДКА несомненно установлена в Истинный. В каком контексте сохранен этот connection.queries? Я злой, я должен быть в состоянии выполнить одну страницу, которая выполняет много заявлений SQL, и затем просто переключитесь на представление http://myserver/sql, которое я создал, и см. те заявления SQL там, правильно? Используя ту же сессию браузера, конечно...

Я действительно проверял, управляли ли db.reset_queries () куда-нибудь в кодексе, появляется, это не.

Какие-либо идеи, почему connection.queries всегда пуст?

10
задан HaukurHaf 25 January 2010 в 16:12
поделиться

2 ответа

Бен прав, что вы видите только запросы из текущего процесса. Вы можете использовать его внутри одного вида или в консоли, но не между видами.

Лучший способ увидеть, какие запросы выполняются в ваших представлениях - это использовать панель инструментов Django debug toolbar.

18
ответ дан 3 December 2019 в 14:43
поделиться

Я думаю, что эти запросы хранятся в памяти, и не передаются между процессами, поэтому у вас будет доступ только к запросам, сделанным по текущему процесс.

Если я попробую код, который вы вставили в ./ Management.py Shell сеанс, я вижу только запросы, которые я ранее сделал в этом сеансе оболочки.

Если я пройдут запросов с вида в контекст шаблона и показать его в шаблоне, я вижу только запросы, сделанные в этом представлении. Это использует сервер Dev, хотя.

Я предполагаю, но не проверил - то, что если вы используете это в среде, где у вас есть один процесс, обслуживающий несколько запросов, вы бы увидели больше запросов на каждый запрос.

3
ответ дан 3 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: