我正在使用django 1.9和python 2.7连接postgres作为后端。当我对存储在postgres中的行执行操作时,当发生异常时,正在操作的行将从后端删除。我也尝试过使用sqlite3作为后端并遇到同样的问题。
关于为什么会发生这种情况的任何想法?
答案 0 :(得分:2)
您几乎肯定将ATOMIC_REQUESTS
设置为True
,并且当引发异常时,事务将被回滚。
来自文档的Database Transactions section:
处理Web上的事务的常用方法是将每个请求包装在事务中。在要为其启用此行为的每个数据库的配置中将
ATOMIC_REQUESTS
设置为True
。它的工作原理如下。在调用视图函数之前,Django启动一个事务。如果生成的响应没有问题,Django会提交事务。 如果视图产生异常,Django将回滚该事务。
大胆强调我的。
如果您不希望这种情况发生,请将ATOMIC_REQUESTS
选项设置为False
。