是否可以在Django中打印queryset.exists()语句生成的SQL?
答案 0 :(得分:-1)
通常是的,你可以打印SQL QuerySet
生成,但是因为exists()
没有返回QuerySet
但返回一个简单的布尔值,所以更难。
也许最简单的方法不是仅针对exists()
打印SQL查询,而是针对视图中的所有查询。您可以关注如何执行此操作(example)或您可以使用django-debug-toolbar。
如果您对打印QuerySet
生成的查询感兴趣,可以使用以下方法打印完整的SQL查询:
print(Model.objects.filter(...).exists().query)
这将打印完整的查询。
如果您的意图是能够复制粘贴查询并直接执行它,它可能并不总是有效。例如,打印查询并不总是产生正确的语法,例如日期。然而,在Django Query
对象中有另一个有用的方法(QuerySet.query
是实例) - sql_with_params()
。这将返回参数化查询和参数本身。例如:
sql, params = Model.objects.filter(...).exists().query.sql_with_params()
Model.objects.raw(sql, params=params)