【发布时间】:2012-04-12 04:15:58
【问题描述】:
我想看看在 django 的模型 .save() 方法上执行了哪些查询。由于我在生产环境中,因此无法使用 Django Toolbar。
【问题讨论】:
我想看看在 django 的模型 .save() 方法上执行了哪些查询。由于我在生产环境中,因此无法使用 Django Toolbar。
【问题讨论】:
根据 Sid 的回答和这个 sn-p (http://djangosn-ps.org/sn-ps/1973/) 我已经用这个替换了 postgres db-wrapper:
# 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': 'my_project.db_backend',而不是默认后端(在我的情况下,'ENGINE': 'django.db.backends.postgresql_psycopg2')
现在connection.queries 将包含您的所有查询!
【讨论】:
有两种方式:
在 Django 1.3 及更高版本中,您可以使用日志记录,我相信这会将您的 sql 查询转储到日志中。 https://docs.djangoproject.com/en/dev/topics/logging/
如果没有 DEBUG=True,似乎没有直接简单的方法。这是我能找到的最接近的:Logging Django SQL queries with DEBUG set to False
【讨论】: