ホームページ >バックエンド開発 >Python チュートリアル >SQL トランザクション - Python を使用した COMMIT、ROLLBACK、およびセーブポイント

SQL トランザクション - Python を使用した COMMIT、ROLLBACK、およびセーブポイント

DDD
DDDオリジナル
2025-01-20 18:35:10443ブラウズ

最新のデータベース開発では、DataGrip などのツールにより、コミット、ロールバック、またはセーブポイントの設定のためのグラフィカル インターフェイスが提供され、トランザクション処理が容易になります。

この記事では、SQL で COMMITROLLBACK、および SAVEPOINT を定義し、OracleMySQL、またはPython の PostgreSQL

主要なトランザクション概念

1.コミット

定義: トランザクションを終了し、すべての変更をデータベースに永続的にします。
ユースケース: トランザクション内のすべての操作が成功した場合は COMMIT を使用し、データベースに変更が確実に反映されるようにします。

2.ロールバック

定義: トランザクション中に行われたすべての変更を元に戻し、データベースを以前の状態に復元します。
ユースケース: ROLLBACK を使用してエラーを処理したり、失敗したトランザクションを元に戻したりします。

3.セーブポイント

定義: トランザクション内に名前付きチェックポイントを設定し、トランザクション全体を元に戻さずにその時点までの部分的なロールバックを許可します。
ユースケース: SAVEPOINT を使用して、複数のステップで複雑なトランザクションを管理し、必要に応じて選択的にロールバックします。

Python とデータベースのトランザクション

プログラムでデータベースを操作する場合、Python のデータベース ライブラリ (cx_Oracle、mysql-connector-python、psycopg2 など) はトランザクションを明示的に制御するメソッドを提供します。

Python でのトランザクションの一般的な手順

  1. トランザクションの開始: 自動コミットが有効になっていない限り、接続で自動的に開始されます。
  2. SQL ステートメントの実行: 必要なデータベース操作を実行します。
  3. コミットまたはロールバック: commit() を使用して変更を確定するか、rollback() を使用して変更を元に戻します。
  4. セーブポイントを使用する: より詳細に制御するには、サポートされている場合はセーブポイントを定義してロールバックします。
例: Oracle データベースとの Python トランザクション

接続のセットアップ

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 Business Objects に精通しています。

データ関連の洞察を調査するために時間を割いていただき、ありがとうございます。ご協力に感謝いたします。

? LinkedIn で私とつながりましょう

SQL トランザクション - Python を使用した COMMIT、ROLLBACK、およびセーブポイント

以上がSQL トランザクション - Python を使用した COMMIT、ROLLBACK、およびセーブポイントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。