在django.db.backends中需要db alias(connection_name)sql query debug log

时间:2017-06-15 03:27:57

标签: python django debugging logging

我可以使用django设置中的记录器配置打印sql日志,如下所示DEBUG=True

'django.db.backends': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': False,
         },
  

[14 / Jun / 2017 19:50:19] DEBUG [django.db.backends:execute](0.213)
  选择“django_session”。“session_key”,   “django_session”。“session_data”,“django_session”。“expire_date”FROM   “django_session”WHERE(“django_session”。“session_key”=   E'79a9c6354bf0f30967adbcb0d572707a'AND   “django_session”。“expire_date”> E'2017-06-14 19:50:18.019996');   
args =('79a9c6354bf0f30967adbcb0d572707a',u'2017-06-14   19:50:18.019996' )

但我得到的信息是持续时间,sql& PARAMS
参考django-doc

我在settings.py中有多个数据库要连接,我使用DATABASE_ROUTERS将查询路由到主/从复制。 但我无法找到将数据库别名(connection_name)记录到记录器的方法。
有没有办法在日志文件中使用 connection_name 打印所有查询而不使用django-debug-toolbar

1 个答案:

答案 0 :(得分:1)

您似乎想要记录每个数据库的查询数。有一种方法可以在不使用任何自定义调试工具栏的情况下执行此操作。编写自定义中间件并记录查询,如下所示。

from django.db import connections

for con in connections: 
    print con,len(connections[con].queries), connections[con].queries