您可以使用內置的日誌記錄工具爲每個生成的查詢輸出到開發服務器上的終端。添加到您的settings.py文件:
# settings.py
LOG_LEVEL = 'DEBUG' if DEBUG else 'WARNING'
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'simple': {
'format': '\n%(thread)d: %(levelname)s %(message)s'
},
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
'multiprocessing': {
'handlers': ['console'],
'level': LOG_LEVEL,
'propagate': False,
},
'django': {
'handlers': ['console'],
'propagate': True,
'level': LOG_LEVEL,
},
'cache_logger': {
'handlers': ['console'],
'propagate': True,
'level': LOG_LEVEL,
}
}
}
這樣,每當DEBUG是真的,你將可以加載一個視圖或調用一個函數或任何東西,看看生成的查詢,並把完成的時間:
4072: DEBUG (0.016) SELECT "django_content_type"."id", "django_content_type"."name", "django_content_type"."app_label", "django_content_type"."model"
FROM "django_content_type" WHERE "django_content_type"."id" = 9 ; args=(9,)
檢查http://stackoverflow.com/questions/10695305/how-to-show-the-sql-django-runs/10701259#10701259使用'django.db.connection.queries'和'django-debug-工具欄「來顯示已執行的SQL。 – okm
@okm那麼只能在模板中執行的sql呢?例如,如果我正在執行'for'循環,並且調用一個調用db調用的db方法 - 我無法在視圖中執行任何操作。 (作爲便箋,我已經使用了調試工具欄) – David542
調試工具欄可以收集並顯示在模板中執行的SQL – okm