Django shell调试models输出的SQL语句方法
程序员文章站
2023-10-19 13:26:47
在settings.py里,配置如下logging:
logging = {
'version': 1,
'disable_existing_logger...
在settings.py里,配置如下logging:
logging = { 'version': 1, 'disable_existing_loggers': false, 'handlers': { 'console':{ 'level':'debug', 'class':'logging.streamhandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': true, 'level':'debug', }, } }
使用效果:
$ python manage.py shell in [1]: from test.models import a in [2]: a.objects.all() (0.001) select "app1_a"."id", "app1_a"."name" from "app1_a" limit 21; args=() [<a: a object>]
在shell命令行的环境下,可以使用 django-exension's shell_plus 命令并打开 --print-sql 选项。
python manage.py shell_plus --print-sql
>>> author.objects.all() select "library_author"."id", "library_author"."name" from "library_author" limit 21 execution time: 0.001393s [database: default] <queryset [<author: author object>]>
django提供的内置记录器
django 在django层次结构中的所有消息记录器。没有使用此名称发布消息,而是使用下面的记录器之一。
django.request 与请求处理相关的日志消息。5xx响应被提升为错误消息;4xx响应被提升为警告消息。
django.server 与由runserver命令调用的服务器所接收的请求的处理相关的日志消息。http 5xx响应被记录为错误消息,4xx响应被记录为警告消息,其他一切都被记录为info。
django.template 与模板呈现相关的日志消息
django.db.backends 有关代码与数据库交互的消息。例如,请求执行的每个应用程序级sql语句都在调试级别记录到此记录器。
以上这篇django shell调试models输出的sql语句方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。