我正在使用Django的命令来执行涉及数据库操作的一些任务:
class SomeCommand(BaseCommand):
@transaction.atomic
def handle(self, *args, **options):
# Some stuff on the database
Run Code Online (Sandbox Code Playgroud)
如果在执行程序期间抛出异常,则@transaction.atomic保证回滚.我可以强制执行此行为而不抛出异常吗?就像是:
# Doing some stuff, changing objects
if some_condition:
# ABANDON ALL CHANGES AND RETURN
Run Code Online (Sandbox Code Playgroud)
Day*_*Day 13
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
Run Code Online (Sandbox Code Playgroud)
引用文档:
设置回滚标志以
True在退出最内层原子块时强制回滚.这可能有助于在不引发异常的情况下触发回滚.
| 归档时间: |
|
| 查看次数: |
3992 次 |
| 最近记录: |