2012-03-28 16 views

回答

2

有2種方式:

  1. https://docs.djangoproject.com/en/dev/faq/models/#how-can-i-see-the-raw-sql-queries-django-is-running

  2. 在Django的1.3及以上,你可以使用日誌記錄,我相信轉儲SQL查詢到日誌。 https://docs.djangoproject.com/en/dev/topics/logging/

似乎沒有DEBUG = True的簡單方法。這是最接近我能找到的:Logging Django SQL queries with DEBUG set to False

+0

正確,但問題特別要求.save()和DEBUG = True,因爲我無法在DEBUG中設置我的實時服務器,所以不是一個選項。我也無法在我的調試環境中重現我的問題。 – 2012-03-28 16:04:46

+0

似乎沒有DEBUG = True的簡單方法。這是我能找到的最接近的:http://stackoverflow.com/questions/7181511/logging-django-sql-queries-with-debug-set-to-false – Sid 2012-03-28 16:14:35

+0

也許你可以設置你的數據庫爲[日誌查詢]( http://www.postgresql.org/docs/8.3/static/runtime-config-logging.html#GUC-LOG-STATEMENT)(注意:放慢速度) – RickyA 2013-01-16 15:02:45

4

基於Sid的答案,這個片段(http://djangosnippets.org/snippets/1973/)我這個替代Postgres的DB-包裝:

# base.py 
from django.db.backends.postgresql_psycopg2.base import * 

#http://djangosnippets.org/snippets/1973/ 
class DatabaseWrapper(DatabaseWrapper): 

    def __init__(self, *args, **kwargs): 
     super(DatabaseWrapper, self).__init__(*args, **kwargs) 
     self.use_debug_cursor = True 

然後在settings.py,用​​,而不是默認的後端(在我的情況,'ENGINE': 'django.db.backends.postgresql_psycopg2'

現在connection.queries將包含所有的疑問!

相關問題