【发布时间】:2014-01-17 00:38:58
【问题描述】:
来自官方 Django 文档: https://docs.djangoproject.com/en/1.5/topics/db/transactions/#transaction-rollback
a.save() # Succeeds, but may be undone by transaction rollback
try:
b.save() # Could throw exception
except IntegrityError:
transaction.rollback()
c.save() # Succeeds, but a.save() may have been undone
调用 transaction.rollback() 会回滚整个事务。任何未提交的数据库操作都将丢失。在此示例中,a.save() 所做的更改将丢失,即使该操作本身没有引发错误。
不保存做提交吗?那么回滚应该不会影响还是我错了?
(.save()函数可以设置参数commit=False,表示通常save会提交)
【问题讨论】:
-
Djangodocs.djangoproject.com/en/dev/topics/db/transactions/…。 (PS:您提到的文档还列出了设置保存点和仅在一定程度上回滚的方法,但您可能读过)
-
save()方法的commit关键字参数指的是对象是否保存到数据库。不影响事务是否提交。
标签: python django transactions rollback