我创建了一个异常
class MyOwnRollBack(Exception):
pass
只能回滚事务而不会将其引发到事务之外:
try:
with transaction.atomic():
# do stuff
raise MyOwnRollBack
except MyOwnRollBack:
pass
有没有一个例外transaction.atomic()
不会让传播,类似于我写的这段代码?
是否存在transaction.atomic((不允许传播的异常,类似于我写的这段代码?
从技术上讲,是的,但出于所有实际目的,不是。
IntegrityErrors将退出
try:
with transaction.atomic():
generate_relationships()
except IntegrityError:
handle_exception()
但一旦到达handle_exception()
,事务就已经被回滚。即使没有回滚,也不允许在回滚完成之前运行数据库语句(将引发TransactionManagmentError
(。
您可能会找到手动处理事务的解决方案,请查看文档https://docs.djangoproject.com/en/2.1/topics/db/transactions/#transactions