Najprostszym sposobem jest użycie django extensions. Można go zainstalować z
$ pip install django-extensions
Uruchom powłokę z
./manage.py shell_plus --print-sql
uruchomić kwerendę
In [1]: Book.objects.all()
Out[1]: SELECT "book_book"."id", "book_book"."name", "book_book"."author_id" FROM "book_book" LIMIT 21
Execution time: 0.087548s [Database: default]
<QuerySet [<Book: The Stranger>, <Book: Atlas Shrugged>]>
Jeśli nie chcesz dołączyć --print-sql
za każdym razem, w ustawieniach Django możesz ustawić
SHELL_PLUS_PRINT_SQL = True
Alternatywnym sposobem jest włączenie rejestrowania zapytań db.
LOGGING = {
'version': 1,
'loggers': {
'django.db.backends': {
'level': 'DEBUG',
'handlers': ['console'],
}
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'filters': ['require_debug_true'],
}
},
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
}
},
}
Dodaj to do swoich ustawień i uruchom ponownie swoją powłokę, aby zobaczyć zapytania SQL.
możliwy duplikat [Django: show/log ORM sql wywołania z powłoki Pythona] (http: // stackoverflow.com/questions/2314920/django-show-log-orm-sql-calls-from-python-shell) – tyrion