この記事ではPythonとSQLiteを用いたCRUD(Create, Read, Update, Delete)操作の具体的な実例をご紹介します。コードサンプルとその詳細解説、さらには応用例も含めています。
目次
はじめに
Pythonでデータベースを操作する場合、SQLiteは非常に手軽な選択肢と言えます。軽量でありながら高機能、そしてPython標準ライブラリに組み込まれているため、追加のインストール作業なくすぐに使い始められます。
基本のCRUD操作
CRUDとは、データベースの基本操作(Create, Read, Update, Delete)を指します。以下は、それぞれの操作をPythonとSQLiteでどのように行うかの基本的なガイドラインです。
データベースとテーブルの作成
import sqlite3
# データベース接続
conn = sqlite3.connect('example.db')
# カーソルオブジェクト作成
c = conn.cursor()
# テーブル作成
c.execute('''CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, email TEXT)''')
# コミット
conn.commit()
# 接続解除
conn.close()
このコードは、`example.db`というSQLiteデータベースに`users`というテーブルを作成します。テーブルには`id`, `name`, `email`という3つのフィールドがあります。
データの追加(Create)
# データベース接続
conn = sqlite3.connect('example.db')
c = conn.cursor()
# データ挿入
c.execute("INSERT INTO users (name, email) VALUES ('John', 'john@example.com')")
# コミット
conn.commit()
# 接続解除
conn.close()
上記のコードで`users`テーブルに1行のデータが追加されます。
応用例
バルクインサート
# データベース接続
conn = sqlite3.connect('example.db')
c = conn.cursor()
# 複数行挿入
data = [
('Alice', 'alice@example.com'),
('Bob', 'bob@example.com'),
('Charlie', 'charlie@example.com')
]
c.executemany("INSERT INTO users (name, email) VALUES (?, ?)", data)
# コミット
conn.commit()
# 接続解除
conn.close()
`executemany`メソッドを使用すると、複数の行を一度にテーブルに挿入することができます。
トランザクションの使用
# データベース接続
conn = sqlite3.connect('example.db')
c = conn.cursor()
# トランザクション開始
conn.isolation_level = None
c.execute("BEGIN TRANSACTION;")
try:
c.execute("INSERT INTO users (name, email) VALUES ('Error', 'error')")
c.execute("INSERT INTO users (name, email) VALUES ('Demo', 'demo@example.com')")
# コミット
c.execute("COMMIT;")
except:
# ロールバック
c.execute("ROLLBACK;")
# 接続解除
conn.close()
トランザクションを用いることで、一連の操作が全て成功した場合のみデータをコミットし、何らかのエラーが発生した場合はロールバックすることができます。
まとめ
PythonとSQLiteを使用したCRUD操作は非常にシンプルですが、多くの場面で有用です。特にSQLiteは設定が容易であり、小規模なプロジェクトから大規模なプロジェクトまで幅広く使えるため、ぜひ一度試してみてください。
コメント