Có vẻ như dễ dàng chạy "giải thích" trực tiếp từ một queryset ở Django, nhưng tôi không thấy bất kỳ điều gì rõ ràng về cách thực hiện, và "giải thích" là một điều khó khăn để tìm kiếm trong các tài liệu.Cách dễ dàng để chạy "giải thích" trên bộ truy vấn trong django
19
A
Trả lời
23
Vâng, có vẻ là không có gì ngoài kia, ngoại trừ một thanh công cụ vì vậy tôi đã viết mixin của riêng tôi để cho tôi một phương pháp explain()
trên queryset tôi:
from django.db import connections
from django.db.models.query import QuerySet
class QuerySetExplainMixin:
def explain(self):
cursor = connections[self.db].cursor()
cursor.execute('explain %s' % str(self.query))
return cursor.fetchall()
QuerySet.__bases__ += (QuerySetExplainMixin,)
Hy vọng rằng đây là hữu ích cho người khác.
11
Chỉ cần một sửa đổi nhỏ cho câu trả lời của guidoism. Điều này ngăn cản nhận được một lỗi ProgrammingError: syntax error at or near ...
do các thông số không được trốn thoát một cách chính xác trong truy vấn liệu:
from django.db import connections
from django.db.models.query import QuerySet
class QuerySetExplainMixin:
def explain(self):
cursor = connections[self.db].cursor()
query, params = self.query.sql_with_params()
cursor.execute('explain %s' % query, params)
return '\n'.join(r[0] for r in cursor.fetchall())
QuerySet.__bases__ += (QuerySetExplainMixin,)
Để sử dụng, bạn chỉ cần gọi giải thích() vào cuối queryset của bạn, ví dụ:
print SomeModel.objects.filter(...).explain()
Các vấn đề liên quan
- 1. Cách dễ dàng để thoát khỏi các biến mẫu Django
- 2. Cách dễ dàng để sử dụng FindControl ("")
- 3. Có cách nào để "GIẢI THÍCH" một truy vấn Cassandra?
- 4. MySQL giải thích Truy vấn hiểu biết
- 5. Cách dễ dàng để chuyển đổi exec sp_executesql thành một truy vấn bình thường?
- 6. Một cách dễ dàng để chạy thử nghiệm trên đá quý là gì?
- 7. Cách dễ dàng để thiết lập CMS trên appharbor
- 8. Bộ lọc truy vấn trong Django inlineformset_factory
- 9. Rất dễ dàng để giải quyết vấn đề với SimpleXML. Những gì tôi đang làm sai?
- 10. Giải thích kế hoạch truy vấn trong thủ tục lưu
- 11. Cách nhanh chóng/dễ dàng để chạy một phương pháp dựa trên điều kiện
- 12. Bộ lọc Django trên giao điểm truy vấn?
- 13. Xem truy vấn SQL cho bộ truy vấn Django xóa
- 14. django - bộ lọc truy vấn trên manytomany là trống
- 15. Có một "Truy vấn Giải thích" cho MongoDB Linq không?
- 16. Cách tối ưu hóa truy vấn MySQL dựa trên kế hoạch GIẢI THÍCH
- 17. Cách tối ưu hóa truy vấn mysql dựa trên giải thích. (Type: TẤT CẢ
- 18. Django: Nhận thêm bộ truy vấn
- 19. Làm thế nào để chạy mã C# trên máy chủ Linux dễ dàng?
- 20. Bộ lọc truy vấn tùy chỉnh Django
- 21. Django - Cách hoạt động của bộ truy vấn ModelChoiceField?
- 22. Truy vấn Django trên Mô hình?
- 23. Cách dễ dàng để truy cập sổ đăng ký I/O CPU Intel trong Windows
- 24. Cách dễ dàng để tìm Subtree trong Tree
- 25. Cách dễ dàng hơn để đồng bộ hóa 2 luồng trong Java?
- 26. Chạy lệnh Django custom manage.py trên Heroku - Nhập vấn đề
- 27. Có một cách dễ dàng để tìm môi trường thời gian chạy trong Pyramid
- 28. Các vấn đề dễ dàng cho trẻ em giải quyết bằng Python
- 29. Truy vấn SQL này làm gì? Vui lòng giải thích
- 30. Cách dễ dàng để xem các tệp kết xuất postgresql?
Hãy xem xét việc mở một vé cho dự án django. Tôi rất thích xem nội trang này. –
Có vẻ hữu ích, thậm chí còn hữu ích hơn với ví dụ về cách sử dụng nó. – szeitlin
Cảm ơn bạn! Cái này ngon quá! – mkoistinen