美文网首页
Django中mysql使用事务以及批量插入数据

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

作者: LeslieLiang | 来源:发表于2019-08-06 16:05 被阅读0次

    使用事务可以有效的防止插入数据时出现错误影响数据的完整性,再出现错误的时候可以回滚事务,做到要么全部插入成功要么全部都不插入

    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)    
    

    几处重点需要注意

    • 导包,from django.db import transaction
    • 事务的保存点,savePoint = transaction.savepoint()
    • 回滚事务,transaction.rollback(savePoint)
    • 批量插入,bulk_create。批量插入需要提供的数据为models的实例

    相关文章

      网友评论

          本文标题:Django中mysql使用事务以及批量插入数据

          本文链接:https://www.haomeiwen.com/subject/kckwdctx.html