Как распечатать запросы, выполняемые django.метод save ()?

Я хочу посмотреть, какие запросы выполняются на модели django .метод Save. Поскольку я нахожусь в производственной среде, я не могу использовать панель инструментов Django для этого.

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. Это самое близкое, что я смог найти:--17-->ведение журнала SQL-запросов Django с отладкой False


на основе ответа Sid и этого фрагмента (http://djangosnippets.org/snippets/1973/) Я заменил db-wrapper postgres следующим:

# 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 будет содержать все ваши запросы!