Django中怎么查看ORM执行的SQL语句
发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,本篇文章给大家分享的是有关Django中怎么查看ORM执行的SQL语句,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Django ORM
千家信息网最后更新 2025年02月21日Django中怎么查看ORM执行的SQL语句
本篇文章给大家分享的是有关Django中怎么查看ORM执行的SQL语句,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
Django ORM对数据库操作的封装相当完善,日常大部分数据库操作都可以通过ORM实现。
但django将查询过程隐藏在了后台,这在开发时可能会略显晦涩,并且使用方式不当还会造成开销过大。
那么如何查看django何时执行了什么sql语句呢?答案是使用Logging。
先直接上方法,在settings.py中加入LOGGING选项,调整logging等级为DEBUG即可:
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'simple': { 'format': '[%(asctime)s] %(message)s' }, }, 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'simple' }, }, 'loggers': { 'django': { 'handlers': ['console'], 'level': 'DEBUG', }, },}
然后启动runserver
,浏览需要访问数据库的页面,在shell中即可看见相关日志,如下:
[2018-04-21 21:09:14,676] (0.002) SELECT `blog_article`.`id`, `blog_article`.`title`, `blog_article`.`cover`, `blog_article`.`content`, `blog_article`.`pub_date`, `blog_article`.`category_id`, `blog_article`.`views`, `blog_category`.`id`, `blog_category`.`name` FROM `blog_article` INNER JOIN `blog_category` ON (`blog_article`.`category_id` = `blog_category`.`id`) WHERE `blog_article`.`pub_date` < '2018-04-21 13:09:14.601856' ORDER BY `blog_article`.`pub_date` DESC LIMIT 10; args=('2018-04-21 13:09:14.601856',)[2018-04-21 21:09:14,678] (0.000) SELECT (`blog_article_topics`.`article_id`) AS `_prefetch_related_val_article_id`, `blog_topic`.`id`, `blog_topic`.`name`, `blog_topic`.`number` FROM `blog_topic` INNER JOIN `blog_article_topics` ON (`blog_topic`.`id` = `blog_article_topics`.`topic_id`) WHERE `blog_article_topics`.`article_id` IN (3, 4, 5, 6, 7, 8, 9, 10, 11, 12) ORDER BY `blog_topic`.`number` ASC; args=(3, 4, 5, 6, 7, 8, 9, 10, 11, 12)[2018-04-21 21:09:14,708] "GET / HTTP/1.1" 200 22325
上面打印出的日志是我的博客首页获取前十篇文章时所执行的部分SQL语句,其对应的QuerySet为
Article.objects.filter(pub_date__lt=timezone.now())[:10] \.defer('author', 'category__number') \.select_related('category') \.prefetch_related('topics')
通过Logging
不仅可以查看SQL语句,还可以由此知道django何时执行了SQL。在某些情况下我们可以通过这种方式判断,后台是否重复执行了SQL语句,便于指导数据库访问优化。
Django使用Python的内建的logging模块执行系统日志记录
以上就是Django中怎么查看ORM执行的SQL语句,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
语句
数据
数据库
日志
篇文章
可以通过
后台
方式
更多
知识
部分
不当
实用
晦涩
博客
大部分
就是
工作会
开销
情况
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全警种
计算软件开发合同
信息网络安全电子刊
与服务器链接失败
南阳微信公众号网络安全
网络安全教育活动安排
网络技术挑战赛广西赛区
计算机网络技术数据通信
女性学习软件开发
两个程序访问同一个数据库
目前mysql数据库版本号
火鸟的sql服务器
软件开发面试人事自我介绍
服务器挂yy
jsp怎么将数据存到数据库
遍历数据库中所有的表
云帮手支持centos服务器吗
网络安全管理报道
南平湃咏网络技术有限公司
养卡软件开发
上海软件开发科技能人郑志
工业分布式数据库
网络安全监察专业能报考公务员吗
拼多多允许销售服务器吗
关于cbm数据库描述正确的
如何提高软件开发效率思维导图
土壤数据库
湖南捷迅网络技术有限公司
计算机网络技术实训周心得体会
武汉丿aVa软件开发招聘