有没有办法从下面这行代码易于比较的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