如何打印django .save()方法执行的查询?

时间:2012-03-28 14:36:01

标签: sql django

我想看看在django的模型.save()方法上执行了什么查询。由于我在生产环境中,我不能使用Django Toolbar。

2 个答案:

答案 0 :(得分:4)

基于Sid的答案和这个片段(http://djangosnippets.org/snippets/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将包含您的所有查询!

答案 1 :(得分: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/

  3. 如果没有DEBUG = True,似乎没有直接简单的方法。这是我能找到的最接近的地方:Logging Django SQL queries with DEBUG set to False