1. 程式人生 > 其它 >【Django雜記】django Django的事務操作方法

【Django雜記】django Django的事務操作方法

Django框架本身提供了兩種事務操作的方法(針對mysql)       從django1.6開始,Django的事務操作方法主要通過django.db.transation模組完成

啟用事務用法1:

from django.db import transaction
from rest_framework.views import APIView

class OrderAPIView(APIView):
    @transaction.atomic  # 開啟事務,當方法執行完以後,自動提交事務
    def post(self, request):
        pass    

啟用事務用法2:

from django.db import transaction
from rest_framework.views import APIView

class OrderAPIView(APIView):
    def post(self, request):
        with transaction.atomic(): # 開啟事務,當with語句執行完成以後,自動提交事務
            pass # 資料庫操作
在使用事務過程中,有時候會出現異常,當出現異常的時候,我們需要讓程式停下來,同時回滾事務。
from django.db import transaction
from rest_framework.views import APIView

class OrderAPIView(APIView):
    def post(self, request):
        with transaction.atomic():
            # 設定事務回滾的標記點
            sid = transation.savepoint()
            ...
            
            try:
               	...
            except:
                transation.savepoint_rallback(sid)