如何记录django应用程序执行的所有SQL查询?
我想记录所有内容,包括来自管理站点的SQL。我看到了这个问题和一个常见问题解答,但是我仍然不知道应该把它放在哪里
from django.db import connection connection.queries
将所有内容记录到一个文件?
所以我的问题是-我应该怎么做才能拥有一个记录所有SQL语句的文件(例如all-sql.log)?
也许看看https://github.com/django-debug-toolbar/django-debug-toolbar
它可以让您查看给定页面生成的所有查询。以及它们发生的位置的堆栈跟踪等。
编辑:将所有SQL查询记录到文件等,然后您将要创建一些中间件。中间件在每个请求上运行。有几种Django片段供您使用:
那些与打印到终端有关,但要使其适应使用python的日志记录库并不难。
在settings.py中添加以下粗体语句
if DEBUG: import logging l = logging.getLogger('django.db.backends') l.setLevel(logging.DEBUG) l.addHandler(logging.StreamHandler()) LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'filters': { 'require_debug_false': { '()': 'django.utils.log.RequireDebugFalse' } }, 'handlers': { 'mail_admins': { 'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler' },'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', }, }, 'loggers': { 'django.request': { 'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': True, },'django.db.backends.sqlite3': { 'level': 'DEBUG', 'handlers': ['console'], }, } }