我們使用Django ORM使查詢數(shù)據(jù)庫變得非常容易,但是如果我們知道幕后發(fā)生了什么或?qū)δ承〥jango查詢執(zhí)行了什么SQL查詢,對(duì)我們提升查詢性能幫助會(huì)非常的大,以下是一些有用的方法,能幫助我們了解幕后的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
這種方法比前一種方法提供的信息更多,因?yàn)槲覀兛梢哉业皆糞QL語句以及執(zhí)行該語句所需的時(shí)間(以秒為單位)。 需要確保在settings.py文件中將此設(shè)置為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()可隨時(shí)用于手動(dòng)清除查詢列表。
3.Django調(diào)試工具欄 Django Debug Toolbar是一組可配置的面板,顯示有關(guān)當(dāng)前請(qǐng)求/響應(yīng)的各種調(diào)試信息,單擊該工具時(shí),將顯示有關(guān)面板內(nèi)容的更多詳細(xì)信息,包括所有SQL查詢。
要在django項(xiàng)目中設(shè)置此工具欄,首先需要安裝:
pip install django-debug-toolbar
然后在settings.py文件中設(shè)置DEBUG = True。
將“ debug_toolbar”添加到INSTALLED_APPS設(shè)置中。
INSTALLED_APPS = [ ‘debug_toolbar’,]
將調(diào)試工具欄的URL添加到項(xiàng)目的URLconf中。
import debug_toolbarfrom django.conf import settingsfrom django.urls import include, pathurlpatterns = [ 。。。 path(‘__debug__/’, include(debug_toolbar.urls)),]
調(diào)試工具欄主要在中間件中實(shí)現(xiàn),應(yīng)盡可能早地放在列表中。在settings.py模塊中啟用它,如下所示:
MIDDLEWARE = [# 。。。 ‘debug_toolbar.middleware.DebugToolbarMiddleware’,# 。。。]
限制訪問的IP地址,在INTERNAL_IPS設(shè)置的IP訪問,才會(huì)顯示“調(diào)試工具欄”。例如:對(duì)于本地開發(fā),必須在INTERNAL_IPS中添加“ 127.0.0.1”。
INTERNAL_IPS = [# 。。。 ‘127.0.0.1’,# 。。。]
文章轉(zhuǎn)載:Python運(yùn)維技術(shù)
(版權(quán)歸原作者所有,侵刪)
編輯:jq
-
IP
+關(guān)注
關(guān)注
5文章
1701瀏覽量
149503 -
SQL
+關(guān)注
關(guān)注
1文章
762瀏覽量
44117 -
URL
+關(guān)注
關(guān)注
0文章
139瀏覽量
15328 -
Django
+關(guān)注
關(guān)注
0文章
44瀏覽量
10379
原文標(biāo)題:為Django查詢生成原始SQL查詢的3種方法
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論