この記事では、PythonでSQLiteを使ってバッチ処理と自動化を行う方法について解説します。具体的なコード例とその解説、応用例を含めています。
目次
はじめに
SQLiteは軽量で使いやすいデータベースエンジンであり、Pythonとの相性も非常によいです。この組み合わせを使って、バッチ処理や自動化タスクを実現する方法を説明します。
基本的なバッチ処理の流れ
PythonとSQLiteを使ったバッチ処理は以下のような手順で行います。
SQLiteデータベースの接続
最初にSQLiteデータベースに接続する必要があります。
import sqlite3
# SQLiteデータベースに接続
conn = sqlite3.connect('example.db')
テーブルの作成とデータの挿入
テーブルを作成し、データを挿入します。
# カーソルオブジェクトを作成
cursor = conn.cursor()
# テーブルを作成
cursor.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)')
# データを挿入
cursor.execute("INSERT INTO users (name) VALUES ('Alice')")
# コミット
conn.commit()
クエリの実行とデータの取得
作成したテーブルに対してクエリを実行し、データを取得します。
# クエリを実行
cursor.execute("SELECT * FROM users")
# データを取得
rows = cursor.fetchall()
for row in rows:
print(row)
データベースのクローズ
最後にデータベースをクローズします。
# データベースをクローズ
conn.close()
応用例1: データのバルクインサート
大量のデータを一度にインサートする方法について説明します。
# バルクインサートするデータ
data = [('Bob',), ('Charlie',), ('Dave',)]
# executemanyを使ってデータを挿入
cursor.executemany("INSERT INTO users (name) VALUES (?)", data)
# コミット
conn.commit()
応用例2: トランザクションの制御
トランザクションを制御する方法を紹介します。
try:
# データを挿入
cursor.execute("INSERT INTO users (name) VALUES ('Eve')")
# データを削除
cursor.execute("DELETE FROM users WHERE name = 'Alice'")
# コミット
conn.commit()
except:
# エラーが発生した場合はロールバック
conn.rollback()
まとめ
PythonとSQLiteを用いて、基本的なバッチ処理から応用までの一連の流れを解説しました。この知識を活かして、データ操作を自動化する際の参考にしてください。
コメント