我们使用Django ORM使查询数据库变得非常容易,但是如果我们知道幕后发生了什么或对某些Django查询执行了什么SQL查询,对我们提升查询性能帮助会非常的大,以下是一些有用的方法,能帮助我们了解幕后的SQL语句是什么。
1.使用queryset的查询属性
这是在Django中查找原始SQL查询的最简单方法。
》》》queryset = Organization.objects.all()》》》print(queryset.query) Output:SELECT “app_organization”。“id”, “app_organization”。“name”, “app_organization”。“created”,“app_organization”。“updated”“ FROM ”app_organization“》》》str(queryset.query)Output:‘SELECT ”app_organization“。”id“, ”app_organization“。”name“, ”app_organization“。”created“, ”app_organization“。”updated“ FROM ”app_organization“’
2.Django connection
这种方法比前一种方法提供的信息更多,因为我们可以找到原始SQL语句以及执行该语句所需的时间(以秒为单位)。 需要确保在settings.py文件中将此设置为DEBUG = True。
》》》from django.db import connection,reset_queries》》》Organization.objects.all()》》》connection.queriesOutput:[{‘sql’: ‘SELECT ”app_organization“。”id“, ”app_organization“。”name“, ”app_organization“。”created“, ”app_organization“。”updated“ FROM ”app_organization“ LIMIT 21’,‘time’: ‘0.001’}]》》》reset_queries()Output:[]
注意:reset_queries()可随时用于手动清除查询列表。
3.Django调试工具栏 Django Debug Toolbar是一组可配置的面板,显示有关当前请求/响应的各种调试信息,单击该工具时,将显示有关面板内容的更多详细信息,包括所有SQL查询。
要在django项目中设置此工具栏,首先需要安装:
pip install django-debug-toolbar
然后在settings.py文件中设置DEBUG = True。
将“ debug_toolbar”添加到INSTALLED_APPS设置中。
INSTALLED_APPS = [ ‘debug_toolbar’,]
将调试工具栏的URL添加到项目的URLconf中。
import debug_toolbarfrom django.conf import settingsfrom django.urls import include, pathurlpatterns = [ 。。。 path(‘__debug__/’, include(debug_toolbar.urls)),]
调试工具栏主要在中间件中实现,应尽可能早地放在列表中。在settings.py模块中启用它,如下所示:
MIDDLEWARE = [# 。。。 ‘debug_toolbar.middleware.DebugToolbarMiddleware’,# 。。。]
限制访问的IP地址,在INTERNAL_IPS设置的IP访问,才会显示“调试工具栏”。例如:对于本地开发,必须在INTERNAL_IPS中添加“ 127.0.0.1”。
INTERNAL_IPS = [# 。。。 ‘127.0.0.1’,# 。。。]
文章转载:Python运维技术
(版权归原作者所有,侵删)
编辑:jq
-
IP
+关注
关注
5文章
1881浏览量
156666 -
SQL
+关注
关注
1文章
807浏览量
46909 -
URL
+关注
关注
0文章
142浏览量
16280 -
Django
+关注
关注
0文章
45浏览量
10927
原文标题:为Django查询生成原始SQL查询的3种方法
文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
NineData 2026年3月功能上新:支持飞书外部审批,增强慢查询分析与数据复制能力
MySQL慢查询调优指南
MySQL数据库慢查询分析与优化实战
MySQL 慢 SQL 排查这件事,NineData 社区VS DBeaver/ Navicat 技术分析
变频器故障查询
爱回收平台价格查询API接口详解
不用编程不用联网,实现倍福(BECKHOFF)PLC对接SQL数据库,上报和查询数据的案例
常用PromQL查询案例总结
触摸查询软件有哪些强大功能|高格欣科技查询一体机终端
数据库慢查询分析与SQL优化实战技巧
如何查询电能质量在线监测装置的认证标准?
Text2SQL准确率暴涨22.6%!3大维度全拆
MySQL慢查询终极优化指南
产品详情查询API接口
简述Django查询生成原始SQL查询的3种方法
评论