如何從QuerySet對象獲取Django將在數據庫中使用的SQL?我試圖調試一些奇怪的行爲,但我不知道什麼查詢要去數據庫。謝謝你的幫助。從Django查詢集獲取SQL
回答
您打印查詢集的query
屬性。
>>> queryset = MyModel.objects.all()
>>> print queryset.query
SELECT "myapp_mymodel"."id", ... FROM "myapp_mymodel"
我發現[this](https://docs.djangoproject.com/en/dev/ref/contrib/gis/tutorial/#automatic-spatial-transformations)其中隱含地提到它,但沒有明確說明上述 – hanleyhansen 2013-09-24 22:41:53
請注意, 'query'的輸出不是有效的SQL,因爲「Django從未實際插入參數:它將查詢和參數分別發送到數據庫適配器,該適配器執行適當的操作。」來源:https://code.djangoproject.com/ticket/17741 – gregoltsov 2014-07-07 14:50:10
我在哪裏寫查詢... MyModel是在models.py文件中的一個類...我的疑問是,我必須編寫SQL查詢從表中檢索值。 – 2014-11-17 07:10:59
簡單:
print my_queryset.query
例如:
from django.contrib.auth.models import User
print User.objects.filter(last_name__icontains = 'ax').query
還應該提到的是,如果你有DEBUG = True,則所有的疑問都會被記錄下來,並可以通過訪問connection.queries獲取它們:
from django.db import connections
connections['default'].queries
django debug toolbar項目使用它以整潔的方式在頁面上顯示查詢。
這個中間件將輸出每一個SQL查詢到控制檯,用顏色高亮和執行時間,它是非常寶貴的,我在優化一些棘手的請求
作爲替代其他的答案,django-devserver將SQL輸出到控制檯。
The accepted answer在使用Django 1.4.4時不適用於我。而不是原始查詢,返回對查詢對象的引用:<django.db.models.sql.query.Query object at 0x10a4acd90>
。
下返回的查詢:
>>> queryset = MyModel.objects.all()
>>> queryset.query.__str__()
它可能不起作用,因爲你只是鍵入'queryset.query'而不是'print queryset.query',它調用'__str __()' – hughes 2013-05-28 17:49:45
@hughes是正確的。如果你不想打印它並想把它作爲一個字符串,而不是調用'__str __()'把它作爲一個字符串,你應該做'str(queryset.query)'。 – Chad 2013-05-30 23:31:44
我正在使用ipdb進行調試,並在執行'p queryset'時打印對查詢對象的引用。 'p queryset .__ str __()'產生期望的結果,所以這是一個更好的答案。 – Rafay 2014-06-25 05:15:27
- 1. Django從查詢集中獲取值
- 2. 從查詢集獲取查詢集
- 3. Django:獲取查詢集的補充
- 4. 如何從Django的一組查詢集中獲取不同的查詢集?
- 5. 從Django查詢集中提取郵件
- 6. Django的:從查詢集
- 7. 從Django的查詢集
- 8. 的Django從查詢集
- 9. Django/Python:如何從模型查詢集中獲取最新值?
- 10. 從django-admin中的查詢集獲取屬性
- 11. 如何從Django中的查詢集中獲取特定屬性?
- 12. django - 如何從值中獲取鍵值查詢集的值()
- 13. 從Django Q()對象獲取查詢
- 14. 從Django獲取原始查詢
- 15. SQL查詢獲取
- 16. django查詢集
- 17. 獲取變量從查詢集
- 18. 從查詢集獲取所有外鍵
- 19. 如何使用sql查詢從數據集中獲取行?
- 20. 獲得原始的SQL查詢,從查詢集
- 21. 印刷Django的查詢集SQL用 「」
- 22. 從SQL查詢中獲取一行數
- 23. 從SQL查詢獲取重複項?
- 24. MySQL從SQL查詢獲取數據(phpmyAdmin)
- 25. 從Oracle SQL查詢中獲取引起
- 26. SQL查詢來獲取從得分
- 27. SQL查詢從表中獲取記錄
- 28. 從sql查詢獲取特定數據
- 29. 從EF7查詢中獲取SQL代碼
- 30. 如何從SQL查詢中獲取值?
這不是重複。相關的問題是一個完全不同的話題。 – craigds 2017-03-23 20:45:32