2010-06-18 42 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