查看Django queryset delete的SQL查询

时间:2010-12-29 19:37:33

标签: django django-orm

如何查看Django为DELETE生成的SQL?

对查询集执行SELECT操作时,您可以执行以下操作:

>>> qs = Entry.objects.filter(date__gt='2010-06-01')
>>> qs.query.as_sql()
('SELECT ...)

但是我不知道如何获取SQL {I} qs.delete()时会发生什么。

由于Django“emulates the behavior of the SQL constraint ON DELETE CASCADE”在删除对象时看起来更复杂。

(背景:在删除子类模型对象时,尝试调试由外键约束生成的IntegrityError。)

2 个答案:

答案 0 :(得分:14)

这很好用:

>>> from django.db import connection
>>> connection.queries[:-10]

认为在将查询添加到connection.queries之前发生了异常,但它们确实存在。

答案 1 :(得分:2)

您可以尝试运行django-debug-toolbar并查看相应的查询。