为什么Django使用自动提交
在SQL标准中, 每个SQL语句在执行时都会启动一个事务,除非已经存在一个事务了。 这样事务必须明确是提交还是回滚。
对应用程序开发者而言,这样非常不方便。 为了避免这个问题,大多数数据库提供了一个autocommit模式。 当 autocommit被打开并且事物处于活动状态时,每个SQL查询都可以看成是一个事务。 也就是说, 不但每个查询是每个事物的开始,而且每个事物会自动提交或回滚,这取决于该查询是否成功执行。
PEP 249, Python数据库API 规范v2.0, 需要将autocommit初试设置为关闭状态。 Django覆盖了这个默认规范并且将autocommit设置为 on.
要想避免这样, 你可以deactivate the transaction management, 但不建议这样做。 |
|