La manera más fácil es usar django extensions. Se puede instalar con
$ pip install django-extensions
Comience su concha con
./manage.py shell_plus --print-sql
Ejecutar una consulta
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>]>
Si no desea anexar --print-sql
cada vez que, en la configuración de Django, puede establecer
SHELL_PLUS_PRINT_SQL = True
Una forma alternativa es habilitar el registro para consultas 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',
}
},
}
Agregue esto a su configuración y reinicie su caparazón para ver las consultas SQL.
posible duplicado de [Django: mostrar/registrar llamadas ORM sql desde el shell python] (http: // stackoverflow.com/questions/2314920/django-show-log-orm-sql-calls-from-python-shell) – tyrion