gpt4 book ai didi

django - Django:如何在不引发异常的情况下回滚(@ transaction.atomic)?

转载 作者:行者123 更新时间:2023-12-03 23:08:24 25 4
gpt4 key购买 nike

我正在使用Django的命令来执行一些涉及数据库操作的任务:

class SomeCommand(BaseCommand):
@transaction.atomic
def handle(self, *args, **options):
# Some stuff on the database


如果在执行程序期间抛出异常,则 @transaction.atomic保证回滚。我可以在不引发异常的情况下强制执行此行为吗?就像是:

# Doing some stuff, changing objects

if some_condition:
# ABANDON ALL CHANGES AND RETURN

最佳答案

transaction.set_rollback可以做到这一点。

class SomeCommand(BaseCommand):
@transaction.atomic
def handle(self, *args, **options):
# Doing some stuff, changing objects
if some_condition:
# Return, rolling back transaction when atomic block exits
transaction.set_rollback(True)
return


the docs引用:


将退回标记设置为 True会在退出最内部的原子块时强制进行回滚。这对于触发回滚而不引发异常很有用。

关于django - Django:如何在不引发异常的情况下回滚(@ transaction.atomic)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39332010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com