您好,登錄后才能下訂單哦!
使用事務可以有效的防止插入數據時出現錯誤影響數據的完整性,再出現錯誤的時候可以回滾事務,做到要么全部插入成功要么全部都不插入
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)
幾處重點需要注意
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。