我正在尝试在 Django 应用程序的代码中记录 sql 语句
目前我在 settings.py 中使用以下记录器配置
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'sql': {
'()': SQLFormatter,
'format': '[%(duration).3f] %(statement)s',
},
'verbose': {
'format': '%(levelname)s %(funcName)s() %(pathname)s[:%(lineno)s] %(name)s \n%(message)s'
}
},
'handlers': {
'console': {
'level': 'DEBUG',
'formatter': 'verbose',
'class': 'logging.StreamHandler',
},
'sql': {
'class': 'logging.StreamHandler',
'formatter': 'sql',
'level': 'DEBUG',
}
}
}
一般来说,要在 django 中记录 sql,我们可以添加django.db.backends
到settings.py中的logger.config
'loggers': {
'django.db.backends': {
'handlers': ['sql'],
'level': 'DEBUG',
'propagate': False,
},
但问题是它会记录每条sql语句。那么我们如何开始和停止记录django.db.backends
在代码之间。
我的views.py中有以下代码
def someview(request)
# start logging from here
user_set = User.objects.all()
for user in user_set:
print(user.last_name)
# stop logging from here
我也想用sql
我在日志配置中定义的处理程序。
在上面的视图函数中,启动和停止记录的位置将包含哪些代码。