【问题标题】:How can I reverse a SQL Query to reach its Django source?如何反转 SQL 查询以到达其 Django 源?
【发布时间】:2015-08-25 14:13:41
【问题描述】:

是否可以反转复杂的 sql 查询(由 joins 和 group by 组成)以到达其 Django 源?

按来源,我是指可能触发查询的模型?

例如,考虑模型:

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

在这些模型上使用 group by 和左外连接的查询被触发。我可以追溯吗?

【问题讨论】:

  • 您为什么不与我们分享查询。
  • this的可能重复
  • 你知道 django 调试工具栏吗:django-debug-toolbar.readthedocs.org/en/1.3 它显示为一个请求执行的所有查询
  • @Wtower 无法共享与工作相关的查询,但我现在对如何调试 Django 查询有了一个清晰的认识。感谢 Vaulstein 的重定向,但我的问题是相反的 - 我有一个查询,我需要知道触发该查询时涉及哪些模型。谢谢你,乔尔·戈德斯蒂克。会检查出来。谢谢大家

标签: python mysql django python-2.7 django-models


【解决方案1】:

也许这就是您正在寻找的答案。

实际上,我从您的评论“我有一个查询,我需要知道触发该查询时涉及哪些模型”中得到了什么,您想跟踪查询中涉及的模型/表。

因此,您可以在对象上使用 .query.E.g;

exm = Example.objects.all()

print exm.query # This will give you the query which will be triggered in the back-end.

您可以从代码中进行调试,也可以使用 django-debug-toolbar

【讨论】:

    猜你喜欢
    • 2015-02-01
    • 2020-09-02
    • 2022-01-19
    • 2019-01-26
    • 2019-10-17
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多