2010-06-18 72 views
0

有没有办法从下面这行代码易于比较的MySQL计划在Django

Model.objects.all().order_by(sort_headers.get_order_by()) 

我要计划使用Django的最好方式打印出来,例如查询,但在我的模型>一百万个对象这太慢了。

回答

1

两个选项浮现在脑海中:

  1. 您可以查看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'}] 
    
  2. 你也可以看作为 的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 
    
0

每个查询集具有.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