Django原始SQL没有被执行

时间:2014-10-22 17:33:16

标签: python django postgresql django-orm

我编写了一个Django管理命令来截断我的PostgreSQL数据库中的某些表(主要用于重置dev环境的某些方面)。但是,即使Django看起来没有错误地执行原始SQL,实际上也不会发生删除或截断。

执行代码很简单,如下所示:

from django.db import connections
cursor = connections[settings.MYDB].cursor()
cursor.execute('truncate myapp_mytable cascade;')

命令运行正常,但是当我查询表myapp_mytable之后,所有记录都保留。如果我在直接SQL终端中手动运行相同的SQL代码,它会正确截断所有记录。我有多个数据库,这就是我指定确切数据库连接的原因。

为什么Django的ORM没有执行这个SQL?

1 个答案:

答案 0 :(得分:0)

也许autocommit已被关闭:

from django.db import transaction
transaction.set_autocommit(True)