在Django中直接从查询集运行"EXPLAIN"似乎很容易,但是我没有看到任何明显的操作方法,而且在文档中搜索"EXPLAIN"是一件困难的事情.

推荐答案

好吧,除了一个工具栏,似乎什么都没有,所以我写了自己的mixin,在我的查询集上给我一个explain()方法:

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,)

希望这对其他人有用.

Django相关问答推荐

通过get_form_kwargs将请求传递给Django表单未能使表单访问self.request.user.

如何在 Django 测试中发送带有图像字段查询参数的 POST 请求

如何在 createsuperuser 中实例化表

NoneType对象没有属性保存Django

Django ModelForm提交按钮不起作用

在 Django 中处理信用卡付款的最佳 Select 是什么?

Django REST Framework 图片上传

如何使用 jQuery 建立 Django 网站

Django 密码以什么格式存储在数据库中?

在 Django CharFields 中自动截断 max_length 字段

Django: Admin:在管理员中更改字段的小部件

Django admin:我可以定义字段顺序吗?

django 模板 if 或语句

Python Django 模板和测试变量是否为空或空字符串

在 django 中是否有生成 settings.SECRET_KEY 的功能?

如何在不发送信号的情况下保存模型?

如何将 ManyToManyField 呈现为复选框?

Django将HttpResponseRedirect返回到带有参数的url

Django 自定义用户邮箱帐户验证

django select_related - 何时使用它