像,讓他們登錄到控制檯?Django - 有沒有辦法查看ORM執行的查詢?
0
A
回答
4
我通常使用http://github.com/robhudson/django-debug-toolbar 它告訴你這些查詢以及它們實際執行多長時間。
1
當然可以。在命令行中/外殼:
queryset = Model.objects.filter()
print queryset.query
變2:
from django.db import connection
queryset = Model.objects.filter()
queryset[0] # This variant needs the queryset to be accessed. Hence.
print connection.queries
如果你要打印用於渲染頁面,那麼你可以使用工具欄作爲@Meitham suggested或使用該Django snippet查詢。
1
你可以用這個來裝飾一個請求處理程序或其他函數,它將在最後打印出合適的格式的總數。
from functools import wraps
from django.utils import termcolors
format_ok = termcolors.make_style(opts=('bold',), fg='green')
format_warning = termcolors.make_style(opts=('bold',), fg='yellow')
format_error = termcolors.make_style(opts=('bold',), fg='red')
try:
from pygments import highlight
from pygments.lexers import SqlLexer
from pygments.formatters import TerminalFormatter
pygments_sql_lexer = SqlLexer()
pygments_terminal_formatter = TerminalFormatter()
highlight_sql = lambda s: highlight(s, pygments_sql_lexer,
pygments_terminal_formatter)
except ImportError:
highlight_sql = lambda s: s
def debug_sql(f):
"""
Turn SQL statement debugging on for a test run.
"""
@wraps(f)
def wrapper(*a, **kw):
from django.conf import settings
from django.db import connection
try:
debug = settings.DEBUG
settings.DEBUG = True
connection.queries = []
return f(*a, **kw)
finally:
total_time = 0
for q in connection.queries:
fmt = format_ok
t = float(q['time'])
total_time += t
if t > 1:
fmt = format_error
elif t > 0.3:
fmt = format_warning
print '[%s] %s' % (fmt(q['time']), highlight_sql(q['sql']))
print "total time =", total_time
print "num queries =", len(connection.queries)
settings.DEBUG = debug
return wrapper
相關問題
- 1. 有沒有辦法逐行檢查簡單的Django查詢?
- 2. 有沒有辦法查看TortoiseSVN正在執行哪些命令?
- 3. 有沒有辦法查看eclipse執行哪些命令?
- 4. 查看所有執行的elasticsearch查詢
- 5. 有沒有辦法在SQL查詢中執行條件邏輯?
- 6. R:有沒有辦法查看列表
- 7. 有沒有辦法查看HttpRuntime.Cache?
- 8. 有沒有辦法推遲ActiveRecord查詢(如Django中的QuerySet)?
- 9. django-taggit:有沒有辦法產生更少的db查詢?
- 10. 有沒有辦法「解釋」Cassandra查詢?
- 11. 有沒有辦法做一個查詢
- 12. 有沒有辦法記錄SQLite查詢?
- 13. 有沒有辦法拆分查詢?
- 14. 有沒有辦法驗證Salesforce.com的SOQL查詢的語法而不執行它?
- 15. 有沒有辦法跟蹤服務器執行的所有查詢?
- 16. 有沒有辦法在django admin中過濾查詢集?
- 17. 有沒有辦法在Django中使用查詢來模擬foreach?
- 18. 有沒有辦法查看Rapid SQL對存儲過程執行的SQL?
- 19. 有沒有辦法檢查SWF以查看它使用的RSL?
- 20. 有沒有辦法在CRM Dynamics中查看LINQ生成的查詢表達式?
- 21. 有沒有辦法記錄在Django視圖中進行的查詢的總數?
- 22. 有沒有辦法查看哪些函數/執行時間最長?
- 23. 有沒有辦法在Django中進行不區分大小寫的IN查詢?
- 24. 有沒有辦法使用Scala的XML庫來執行XPath字符串查詢?
- 25. 有沒有辦法從Simple.Data記錄實際執行的SQL查詢?
- 26. 有沒有辦法在mongo map reduce查詢中查看map函數輸出?
- 27. 有沒有辦法顯示關聯的查詢作爲行?
- 28. 有沒有辦法在oracle中查詢不同的行記錄?
- 29. 有沒有辦法在java中查詢argv的運行時?
- 30. 有沒有辦法檢查代碼是否在TransactionScope中執行?