Django中mysql使用事务以及批量插入数据

使用事务能够有效的防止插入数据时出现错误影响数据的完整性,再出现错误的时候能够回滚事务,作到要么所有插入成功要么所有都不插入python

from django.views import View
from main import models
from django.db import transaction
import json

class BillTypeAdd(View):
    '''
    新增帐单类别api
    '''
    @transaction.atomic # 事务修饰器
    def post(self, request):
        status = False
        data = request.POST.get('data')

        # 用于事务保存
        savePoint = None

        try:
            data = json.loads(data)
            # 用于存储实例对象
            BillTypeModels = []
            for item in data:
                item.pop('id')
                BillTypeModels.append(models.BillType(**item))

            savePoint = transaction.savepoint() # 事务保存点

            models.BillType.objects.bulk_create(BillTypeModels)

            status = True
        except Exception as error:
            if savePoint:
                # 回滚事务
                transaction.rollback(savePoint)
            status = error.__str__()

        return HttpResponse(status)

几处重点须要注意django

  • 导包,from django.db import transaction
  • 事务的保存点,savePoint = transaction.savepoint()
  • 回滚事务,transaction.rollback(savePoint)
  • 批量插入,bulk_create。批量插入须要提供的数据为models的实例
相关文章
相关标签/搜索