在 Django 中轻松比较 MySQL 计划

发布于 2024-09-06 07:26:09 字数 167 浏览 3 评论 0原文

有没有办法打印出查询,例如从这行代码

Model.objects.all().order_by(sort_headers.get_order_by())

我想计划使用 Django 的最佳方式,但使用 >我的模型中有 100 万个对象,这太慢了。

is there a way to print out query for example from this line of code

Model.objects.all().order_by(sort_headers.get_order_by())

I want to plan best way of using Django but with > 1 million of objects in my model this is getting too slow.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

遥远的她 2024-09-13 07:26:09

我想到了两个选项:

  1. 您可以将原始 SQL 查询视为
    Django 常见问题

    确保您的 Django DEBUG 设置
    设置为 True。然后,只需执行以下操作:

    <前><代码>>>>从 django.db 导入连接
    >>>>>连接查询
    [{'sql': '从 polls_polls 中选择 polls_polls.id,polls_polls.question,polls_polls.pub_date', '时间': '0.002'}]

  2. 您还可以查看
    debugsqlshell 作为以下部分提供
    Django 调试工具栏
    包裹。这输出底层
    每个 ORM 调用结果的 SQL
    在数据库查询中,例如:

    <前><代码>>>>从 page.models 导入页面
    >>>>> ### 查找和使用导致额外的查询...
    >>>>> p = Page.objects.get(pk=1)
    选择“page_page”。“id”,
    "page_page"."编号",
    "page_page"."template_id",
    “page_page”。“描述”来自“page_page”,其中
    "page_page"."id" = 1

Two options come to mind:

  1. You can view the raw SQL queries as
    described in the Django FAQ:

    Make sure your Django DEBUG setting
    is set to True. Then, just do this:

    >>> 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. You could also look at the
    debugsqlshell supplied as part of
    the Django Debug Toolbar
    package. This outputs the underlying
    SQL for each ORM call that results
    in a database query, for example:

    >>> 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
    
多彩岁月 2024-09-13 07:26:09

每个查询集都有一个对查询对象的 .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

Each queryset has a .query reference to the query object. Printing this object will give you the query executed.

>>> f = Model.objects.all().order_by(sort_headers.get_order_by())
>>> print(f.query)
>>> query = str(f.query) # if you want to save it
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文