gpt4 book ai didi

python - Django使用 `mysql.connector.django`作为数据库ENGINE后,如何打印执行的SQL语句

转载 作者:行者123 更新时间:2023-11-29 15:36:46 24 4
gpt4 key购买 nike

数据库配置如下:

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

作为标题?

之前的django.db.backends,我在setting.py中添加了如下配置,打印执行SQL语句。

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

最佳答案

您的日志记录配置不能像这样工作的原因很可能是因为您的 settings.DEBUG = False

这是 Django 文档中所述的内容,地址 this section ,其中写着(强调我的):

For performance reasons, SQL logging is only enabled when settings.DEBUG is set to True, regardless of the logging level or handlers that are installed.

所以我假设您不想看到生产中的每个 SQL 查询,因此将 settings.DEBUG 更改为 True在开发模式下 它会起作用的,我刚刚尝试过。确保您的 DEBUG 属性没有被某些 env_var 或其他机制覆盖。 settings.DEBUG 的最后一个值应为 True 才能正常工作。再次强调,仅在开发模式中执行此操作。

搞乱日志设置不起作用的原因是 settings.DEBUG 属性控制 Django 是否使用 CursorDebugWrapper (记录它执行的所有查询) ,而不是 CursorWrapper (它没有)。发生这种情况here .

如果您希望它与 settings.DEBUG = False 一起使用(不推荐),请参阅 this answer关于如何强制数据库使用 CursorDebugWrapper

<小时/>

关于python - Django使用 `mysql.connector.django`作为数据库ENGINE后,如何打印执行的SQL语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58164632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com