Django是否支持开箱即用的交易?

时间:2019-07-11 20:03:15

标签: django

我有一组利用Django管理/命令模块的功能来运行一堆cron作业,这些作业将更新模型。但是,我还需要这些作为全部或无交易执行。 Django是否提供定义交易的方法?

1 个答案:

答案 0 :(得分:1)

如果您尝试在事务中包装大量代码,则可以使用transaction.atomic作为装饰器或上下文管理器,例如

from django.db import transaction

@transaction.atomic
def management_command(args):
    # This code executes inside a transaction.
    do_stuff()

def management_command(args):
    # This code executes in autocommit mode (Django's default).
    do_stuff()

    with transaction.atomic():
        # This code executes inside a transaction.
        do_more_stuff()

有关更多详细信息,请参见https://docs.djangoproject.com/en/2.2/topics/db/transactions/#controlling-transactions-explicitly