首頁 >後端開發 >Python教學 >SQL 交易 - 使用 Python 提交、回溯和保存點

SQL 交易 - 使用 Python 提交、回溯和保存點

DDD
DDD原創
2025-01-20 18:35:10394瀏覽

在現代資料庫開發中,DataGrip 等工具透過提供圖形介面來提交、回溯或設定保存點,使事務處理變得更容易。

在本文中,我們將在SQL 中定義COMMITROLLBACKSAVEPOINT 並示範如何在使用Oracle MySQLPython 中的 PostgreSQL

關鍵交易概念

1.提交

定義:完成事務,使所有變更永久保存在資料庫中。
用例:當事務中的所有操作都成功時使用COMMIT,確保資料庫反映變更。

2.回滾

定義:恢復交易期間所做的所有更改,將資料庫還原到先前的狀態。
用例:使用ROLLBACK 處理錯誤或撤消失敗的交易。

3.保存點

定義:在交易中設定命名檢查點,允許部分回滾到該點而不撤銷整個交易。
用例:使用SAVEPOINT 管理多個步驟的複雜事務,在需要時選擇性地回滾。

Python 與資料庫事務

以程式設計方式使用資料庫時,Python 的資料庫庫(例如 cx_Oracle、mysql-connector-python、psycopg2)提供明確控制交易的方法。

Python 中事務的常見步驟

  1. 啟動交易:除非啟用自動提交,否則自動啟動連線。
  2. 執行SQL語句:執行必要的資料庫操作。
  3. 提交或回滾:使用 commit() 完成變更或 rollback() 復原變更。
  4. 使用保存點:為了更好地控制,定義並回滾到保存點(如果支援)。
範例:Python 與 Oracle 資料庫的事務

設定連線

import cx_Oracle

# Connect to Oracle Database
connection = cx_Oracle.connect("user/password@localhost/XEPDB1")
cursor = connection.cursor()

使用 COMMIT 和 ROLLBACK

try:
    # Start Transaction
    cursor.execute("UPDATE Accounts SET Balance = Balance - 100 WHERE Name = 'Alice'")
    cursor.execute("UPDATE Accounts SET Balance = Balance + 100 WHERE Name = 'Bob'")

    # Commit the transaction
    connection.commit()
    print("Transaction committed successfully!")
except Exception as e:
    # Rollback in case of error
    connection.rollback()
    print(f"Transaction failed. Rolled back changes. Error: {e}")

使用保存點

try:
    # Start Transaction
    cursor.execute("UPDATE Accounts SET Balance = Balance - 200 WHERE Name = 'Alice'")
    connection.commit()

    # Savepoint
    cursor.execute("SAVEPOINT Savepoint_After_Alice")

    # Add 200 to Bob (intentional error to demonstrate rollback)
    cursor.execute("UPDATE Accounts SET Balance = Balance + 200 WHERE Name = 'Unknown'")

    # Commit if successful
    connection.commit()
except Exception as e:
    # Rollback to savepoint
    cursor.execute("ROLLBACK TO Savepoint_After_Alice")
    connection.commit()
    print(f"Rolled back to savepoint. Error: {e}")
概括

掌握這些概念可以讓您在實際應用中有效率地管理資料庫事務!


探索更多

luca1iu image

劉盧卡

你好呀! ?我是 Luca,對所有數據充滿熱情的商業智慧開發人員。精通 Python、SQL、Power BI、Tableau、SAP 業務對象。

感謝您花時間與我一起探索與數據相關的見解。感謝您的參與。

?在 LinkedIn 上與我聯繫

SQL 交易 - 使用 Python 提交、回溯和保存點

以上是SQL 交易 - 使用 Python 提交、回溯和保存點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn