Может ли Django ORM выводить используемый SQL-запрос? - PullRequest
7 голосов
/ 21 января 2011

Я знаю, что вы можете вывести SQL, чтобы увидеть созданные таблицы. Может ли Django вывести sql, используемый для любого запроса, например:

Protocols.objects.filter(active=False)

? Я не мог найти это в документах, так что, надеюсь, кто-то может указать мне их, если на самом деле Джанго может сделать это.

Ответы [ 3 ]

13 голосов
/ 21 января 2011

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

>>> from django.db import connection    
>>> connection.queries = []
>>> Protocols.objects.filter(active=False)
>>> print connection.queries
8 голосов
/ 21 января 2011

Да, может. Вы должны убедиться, что DEBUG = True
в вашем файле настроек

вы можете увидеть, какие sql запросы были выполнены ...

>>> from django.db import connection
>>> connection.queries

Вам, очевидно, нужно выполнить несколько запросов, чтобы увидеть их здесь.

Чтобы увидеть, что выполняется для доставки определенного QuerySet, вы можете сделать следующее

ул (MyModel.objects.filter (myvar__gte = 15) .query)

Это задокументировано здесь http://docs.djangoproject.com/en/dev/faq/models/

3 голосов
/ 21 января 2011

Я считаю панель отладки Django неоценимой. Также есть .as_sql () для отображения кода в коде (см. в этом посте SO для заметки, в которой есть хорошая строка)

...