カテゴリ: Python 更新日: 2026/03/04

Pythonでトランザクション処理を実装する方法を完全解説!commit・rollbackで安全なSQL操作

Pythonでトランザクション処理を実装する方法(commit・rollback)
Pythonでトランザクション処理を実装する方法(commit・rollback)

先生と生徒の会話形式で理解しよう

生徒

「Pythonでデータベースにデータを保存するとき、途中で失敗したらどうなるんですか?」

先生

「そのままだと、途中までの処理だけが残ってしまうことがあります。そこで必要になるのがトランザクション処理です。」

生徒

「トランザクションって、なんだか難しそうな言葉ですね……」

先生

「安心してください。まとめて処理して、成功したら確定、失敗したら取り消す仕組みだと考えると分かりやすいですよ。」

1. トランザクション処理とは何か

1. トランザクション処理とは何か
1. トランザクション処理とは何か

トランザクション処理とは、複数のSQL操作をひとまとまりとして扱う仕組みです。全部うまくいったときだけ結果を保存し、途中で問題が起きたら最初からなかったことにします。銀行での振り込みのように、「減らす」「増やす」をセットで行うイメージです。

2. なぜトランザクションが必要なのか

2. なぜトランザクションが必要なのか
2. なぜトランザクションが必要なのか

データベース操作では、登録や更新を連続して行うことがよくあります。もし途中でエラーが起きると、データが中途半端な状態で残ってしまいます。これを防ぐために、トランザクション処理を使ってデータの整合性を守ります。

3. commitとrollbackの基本

3. commitとrollbackの基本
3. commitとrollbackの基本

commitは「ここまでの変更を確定する」という命令です。一方、rollbackは「変更をすべて取り消す」という命令です。この二つを使い分けることで、安全なデータベース操作ができます。

4. SQLiteでの基本的なトランザクション例

4. SQLiteでの基本的なトランザクション例
4. SQLiteでの基本的なトランザクション例

Python標準のsqlite3では、接続した時点でトランザクションが始まります。commitを呼び出すまで、変更は仮の状態です。


import sqlite3

conn = sqlite3.connect("sample.db")
cursor = conn.cursor()

cursor.execute("INSERT INTO users (name) VALUES ('田中')")
conn.commit()

5. rollbackを使った取り消し処理

5. rollbackを使った取り消し処理
5. rollbackを使った取り消し処理

処理中に問題が起きた場合、rollbackを使うと変更を元に戻せます。これにより、データベースは安全な状態を保てます。


cursor.execute("INSERT INTO users (name) VALUES ('佐藤')")
conn.rollback()

6. 例外と組み合わせた実践的な使い方

6. 例外と組み合わせた実践的な使い方
6. 例外と組み合わせた実践的な使い方

実際のプログラムでは、エラーが起きる可能性を考えて処理します。成功したらcommit、失敗したらrollbackという流れが基本です。


try:
    cursor.execute("INSERT INTO users (name) VALUES ('鈴木')")
    cursor.execute("INSERT INTO users (name) VALUES ('高橋')")
    conn.commit()
except:
    conn.rollback()

7. トランザクションの考え方を身近な例で理解する

7. トランザクションの考え方を身近な例で理解する
7. トランザクションの考え方を身近な例で理解する

トランザクションは「まとめ買い」に似ています。全部の商品がそろって初めて会計が成立します。途中で在庫切れが分かったら、最初から買わなかったことにします。この考え方がcommitとrollbackです。

8. 初心者がつまずきやすい注意点

8. 初心者がつまずきやすい注意点
8. 初心者がつまずきやすい注意点

commitを忘れると、せっかく登録したデータが保存されません。また、rollbackはcommit前しか効果がありません。処理の流れを意識して書くことが大切です。

カテゴリの一覧へ
新着記事
New1
Python
Pythonのエラーと例外の基本!初心者がよく出会うエラーとその対処法まとめ
New2
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
New3
Flask
PythonのFlaskアプリにOAuth2認証を導入する基本ステップまとめ!初心者でもわかる外部サービス連携の仕組み
New4
Python
Pythonでトランザクション処理を実装する方法を完全解説!commit・rollbackで安全なSQL操作
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonのコメント活用術!初心者向けにTODO・FIXME・ドキュメンテーションコメントの書き方を完全解説
No.2
Java&Spring記事人気No2
Python
Pythonのbytes型とbytearray型とは?初心者向けにバイナリデータの扱い方を解説!
No.3
Java&Spring記事人気No3
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.4
Java&Spring記事人気No4
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
No.5
Java&Spring記事人気No5
Flask
Flaskで非同期処理が必要になる場面とは?初心者でもわかる非同期処理とタスク管理の考え方
No.6
Java&Spring記事人気No6
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.7
Java&Spring記事人気No7
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.8
Java&Spring記事人気No8
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説