django中怎麼使用mysql數據庫的事務

Mysql數據庫事務:

在進行後端業務開始操做修改數據庫時,可能會涉及到多張表的數據修改,對這些數據的修改應該是一個總體事務,即要麼一塊兒成功,要麼一塊兒失敗mysql

Django中對於數據庫的事務,默認每執行一句數據庫操做,便會自動提交。咱們須要在保存數據庫操做中本身控制數據庫事務的執行流程。sql

在Django中能夠經過django.db.transaction模塊提供的atomic來定義一個事務,atomic提供兩種用法:數據庫

  • 裝飾器用法  
from django.db import transaction @transaction.atomic def viewfunc(request): # 這些代碼會在一個事務中執行
    ...

 

  • with語句用法 
from django.db import transaction def viewfunc(request): # 這部分代碼不在事務中,會被Django自動提交
 ... with transaction.atomic(): # 這部分代碼會在事務中執行
        ...

在Django中,還提供了保存點的支持,能夠在事務中建立保存點來記錄數據的特定狀態,數據庫出現錯誤時,能夠恢復到數據保存點的狀態django

from django.db import transaction # 建立保存點
save_id = transaction.savepoint() # 回滾到保存點
transaction.savepoint_rollback(save_id)

補充:後端

mysql事務:一組mysql語句,放在同一事務中,要麼都成功,要麼都失敗。atom

 

1)mysql事務基本操做:spa

 

​ begin或start transaction:手動開啓一個mysql事務。code

 

​ commit: 事務提交,讓事務中sql語句的執行結果永久有效。blog

 

​ rollback: 事務回滾,撤銷事務中sql語句的執行結果。事務

 

2)mysql事務的保存點:

 

​ 在mysql事務中,能夠設置事務保存點,在進行事務語句回滾時能夠只回滾到某個保存點。

 

​ savepoint `保存點名稱`: 設置mysql事務保存點。

 

​ rollback to `保存點名稱`: 回滾事務語句到保存點的位置,保存點以後sql語句的執行結果會被撤銷。

相關文章
相關標籤/搜索