После того, как Django использует `mysql.connector.django` в качестве базы данных ENGINE, как распечатать выполненный оператор SQL - PullRequest
0 голосов
/ 30 сентября 2019

Конфигурация базы данных выглядит следующим образом:

https://dev.mysql.com/doc/connector-python/en/connector-python-django-backend.html

Как заголовок?

Ранее django.db.backends, я добавил следующую настройку в настройку. py, оператор SQL выполнения печати print

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level':'DEBUG',
        },
    }
}

1 Ответ

0 голосов
/ 30 сентября 2019

Причина, по которой ваша конфигурация логирования не работает так, заключается в том, что, скорее всего, ваша settings.DEBUG = False.

Это то, что указано в документации Django, на в этом разделе. , где говорится (выделено мое):

По соображениям производительности ведение журнала SQL включено только в случае settings.DEBUG, установленном в True , независимо от уровня ведения журналаили установленные обработчики.

Поэтому я предполагаю, что вы не хотите видеть каждый SQL-запрос в рабочем состоянии, поэтому измените settings.DEBUG на True, в режиме разработки и это сработает, я просто попробовал. Убедитесь, что ваш атрибут DEBUG не переопределен каким-либо env_var или каким-либо другим механизмом. Последнее значение settings.DEBUG должно быть True, чтобы это работало. И снова, делайте это только в режиме разработки .

Причина, по которой не работает связывание с настройками ведения журнала, заключается в том, что атрибут settings.DEBUG контролирует, использует ли Django CursorDebugWrapper (который регистрирует все запросы, которые он выполняет) вместо CursorWrapper (который не выполняет). Это происходит здесь .

Если вы хотите, чтобы он работал с settings.DEBUG = False ( не рекомендуется ), то см. этот ответ о том, какзаставить БД использовать CursorDebugWrapper.


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...