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