有沒有辦法從下面這行代碼易於比較的MySQL計劃在Django
Model.objects.all().order_by(sort_headers.get_order_by())
我要計劃使用Django的最好方式打印出來,例如查詢,但在我的模型>一百萬個對象這太慢了。
有沒有辦法從下面這行代碼易於比較的MySQL計劃在Django
Model.objects.all().order_by(sort_headers.get_order_by())
我要計劃使用Django的最好方式打印出來,例如查詢,但在我的模型>一百萬個對象這太慢了。
兩個選項浮現在腦海中:
您可以查看Django FAQ描述的原始的SQL查詢, :
確保你的Django DEBUG設置 設置爲True。然後,只是這樣做:
>>> from django.db import connection
>>> connection.queries
[{'sql': 'SELECT polls_polls.id,polls_polls.question,polls_polls.pub_date FROM polls_polls', 'time': '0.002'}]
你也可以看作爲 的Django Debug Toolbar 包的一部分提供的 debugsqlshell
。此輸出底層 SQL每個ORM呼叫導致 在數據庫中查詢,例如:
>>> from page.models import Page
>>> ### Lookup and use resulting in an extra query...
>>> p = Page.objects.get(pk=1)
SELECT "page_page"."id",
"page_page"."number",
"page_page"."template_id",
"page_page"."description" FROM "page_page" WHERE
"page_page"."id" = 1
每個查詢集具有.query
參照查詢對象。打印這個對象會給你執行的查詢。
>>> f = Model.objects.all().order_by(sort_headers.get_order_by())
>>> print(f.query)
>>> query = str(f.query) # if you want to save it