MySQL で トランザクションを有効にするには、Python 側で autocommit = False に設定し、明示的に commit() または rollback() を使います。
目次
✅ トランザクション付き MySQL 接続(Python + mysql-connector-python)
import mysql.connector
# 接続設定(例)
config = {
    'host': 'localhost',
    'user': 'test_user',
    'password': 'test_password',
    'database': 'test_db',
    'port': 3306
}
try:
    conn = mysql.connector.connect(**config)
    conn.autocommit = False  # トランザクションを有効化
    cursor = conn.cursor()
    # --- トランザクション開始 ---
    cursor.execute("INSERT INTO users (name, age) VALUES (%s, %s)", ("Taro", 25))
    cursor.execute("INSERT INTO users (name, age) VALUES (%s, %s)", ("Jiro", 30))
    conn.commit()  # 正常ならコミット
    print("✅ トランザクション成功(コミット済)")
except mysql.connector.Error as e:
    print("❌ エラー発生:", e)
    conn.rollback()  # エラー時はロールバック
    print("🔄 ロールバック完了")
finally:
    if 'cursor' in locals(): cursor.close()
    if 'conn' in locals() and conn.is_connected(): conn.close()
✅ 注意点
| ポイント | 説明 | 
|---|---|
| autocommit = False | 明示的にトランザクション制御するために必要 | 
| commit() | 全操作が成功したら呼び出す | 
| rollback() | 例外が出たら呼び出すことでデータの一貫性を保つ | 
| 対象テーブルのストレージエンジン | InnoDB である必要があります(MyISAM はトランザクション非対応) | 
🔍 InnoDBの確認方法(MySQL)
SHOW TABLE STATUS WHERE Name = 'users';
Engine が InnoDB であればOK。
トランザクションを使うコードに、ログ出力や複数テーブルの一括操作なども組み込み可能です。
必要であれば応用例を提示できます。
 
	
 
		 
			 
			 
			