Django在事务结束前提交到数据库

时间:2017-07-08 14:44:37

标签: python django postgresql transactions

我正在使用Django 1.10和Postgres数据库以及django-rest-framework。我调试了我的代码,无论我在哪里some_entity.save(),我都会立即看到数据库中的变化。问题是我有ATOMIC_REQUESTS = True,这意味着在视图成功完成之前,没有任何内容会被提交到数据库。我现在担心数据库完整性 - 如果稍后发生异常,则不会回滚任何内容

1 个答案:

答案 0 :(得分:1)

您描述的是数据库事务的完美预期行为。

使用ATOMIC_REQUESTS = True每个请求都包含在数据库事务中,这意味着事务在收到请求时启动,并在生成响应后提交而没有问题。

在交易过程中,您可以阅读自己的写作:SQL数据库的工作原理(反之则相当混乱)。

在大多数配置中,这些写入是"隔离":如果它们尚未提交,则它们将不会从并发请求(在不同的事务中)中可见。有关事务隔离的更多详细信息,请查看postgresql文档:https://www.postgresql.org/docs/current/static/transaction-iso.html