MySQLにおいて、トランザクション隔離レベルは複数のトランザクションが同時に実行される際に、それらのトランザクションの影響をどのように制御するかを定義します。MySQLは4つのトランザクション隔離レベルをサポートしています。それらは、READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、および SERIALIZABLE です。
まず、データベースに接続します。
import mysql.connector
# MySQLに接続
conn = mysql.connector.connect(
host="your_host",
user="your_user",
password="your_password",
database="your_database"
)
# カーソルを取得
cursor = conn.cursor()
次に、トランザクション隔離レベルを設定します。以下は、REPEATABLE READ
に設定する例です。
# トランザクション隔離レベルをREPEATABLE READに設定
cursor.execute("SET TRANSACTION ISOLATION LEVEL REPEATABLE READ")
そして、トランザクションを開始します。
# トランザクション開始
cursor.execute("START TRANSACTION")
ここで、トランザクション内でデータベースの操作を行います。例として、SELECT文を実行します。
# トランザクション内でのSELECT文
cursor.execute("SELECT * FROM your_table WHERE your_condition")
result = cursor.fetchall()
print(result)
最後に、トランザクションをコミットして変更を確定します。
# トランザクションコミット
cursor.execute("COMMIT")
これにより、REPEATABLE READ
のトランザクションが実行され、他のトランザクションからの変更がトランザクション内で確定されるまでの間、同じデータを読み取ることができます。各隔離レベルには異なる挙動があり、適切な隔離レベルを選択することが重要です。