2017-06-15 88 views
1

我能夠用在Django設置記錄器配置打印SQL日誌,當我有DEBUG=True需要django.db.backends SQL查詢調試日誌數據庫別名(CONNECTION_NAME)

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

[以下選擇「django_session」。「session_key」, 「django_session」。「」session_data「,」django_session「。」expire_date「[django.db.backends:execute](0.213)
「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將查詢路由到主/從複製。 但我無法找到方法將DB別名(connection_name)記錄到記錄器。
有沒有辦法在日誌文件中使用connection_name而不使用django-debug-toolbar來打印所有查詢?

回答

1

看來你想記錄來自每個數據庫的查詢數量。有一種方法可以在不使用任何自定義調試工具欄的情況下執行此操作。寫入您的自定義中間件並記錄查詢,如下所示。

from django.db import connections 

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

非常感謝@維迪亞,薩加爾我才知道,所有的查詢會話期間執行的是可以使用的連接,而不是使用連接最終早些時候給我幾個疑問,那就是涉及到違約分貝明顯。 – PiyusG