この記事では、Pythonを使用してCSVファイルとデータベース(具体的にはSQLite)との連携・データ交換を行う方法について詳しく解説します。具体的なコード例とその解説、応用例を含めています。
CSVとデータベースの基礎知識
CSV(Comma-Separated Values)ファイルは、データをカンマで区切って保存するテキストファイルの一種です。データベースとは、大量のデータを効率よく管理するためのシステムです。この記事ではSQLiteを使用しますが、他のデータベース(MySQLやPostgreSQLなど)でも原則として同様の手法が適用できます。
必要なライブラリとセットアップ
Pythonの標準ライブラリには`csv`と`sqlite3`が含まれており、これを使用します。
環境設定
特に追加のパッケージインストールは不要です。Pythonがインストールされていれば、すぐに開発を始められます。
CSVファイルの読み込み
import csv
# CSVファイルを開く
with open('sample.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print(row)
コードの解説
1. `csv`モジュールをインポートします。
2. `with open(‘sample.csv’, ‘r’) as f:`でCSVファイルを読み込みモードで開きます。
3. `csv.reader()`を使用して、CSVファイルを読み込みます。
4. `for row in reader:`でCSVファイルの各行を処理します。
SQLiteデータベースへの書き込み
import sqlite3
# データベースに接続
conn = sqlite3.connect('sample.db')
c = conn.cursor()
# テーブル作成
c.execute('CREATE TABLE IF NOT EXISTS sample_table (id INTEGER, name TEXT)')
conn.commit()
# データ挿入
c.execute("INSERT INTO sample_table VALUES (1, 'Alice')")
conn.commit()
# データベースを閉じる
conn.close()
コードの解説
1. `sqlite3`モジュールをインポートします。
2. `sqlite3.connect(‘sample.db’)`でデータベースに接続します。
3. カーソルオブジェクトを作成します。
4. SQLクエリを使用してテーブルを作成し、データを挿入します。
CSVとSQLiteの連携
# この部分はCSVファイルの読み込みとデータベースの書き込みを連携させるサンプルです
with open('sample.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
c.execute("INSERT INTO sample_table VALUES (?, ?)", (row[0], row[1]))
conn.commit()
コードの解説
このコードは、CSVファイルから読み取ったデータをSQLiteデータベースに書き込む例です。`c.execute()`の第二引数でパラメータを指定しています。
応用例
1. データのフィルタリングと書き込み
# 条件に一致するデータだけをデータベースに書き込む
for row in reader:
if int(row[0]) > 10:
c.execute("INSERT INTO sample_table VALUES (?, ?)", (row[0], row[1]))
conn.commit()
2. 複数のCSVファイルからデータを集約
# 複数のCSVファイルからデータを読み込む
csv_files = ['sample1.csv', 'sample2.csv']
for file in csv_files:
with open(file, 'r') as f:
reader = csv.reader(f)
for row in reader:
c.execute("INSERT INTO sample_table VALUES (?, ?)", (row[0], row[1]))
conn.commit()
3. データベースからCSVにエクスポート
# データベースのデータをCSVファイルに書き出す
with open('export.csv', 'w', newline='') as f:
writer = csv.writer(f)
c.execute("SELECT * FROM sample_table")
rows = c.fetchall()
for row in rows:
writer.writerow(row)
まとめ
PythonでCSVファイルとデータベースの連携・データ交換を行う方法には多くの応用が可能です。基本的な読み込みと書き込みから応用例まで解説しましたが、それらを組み合わせることでさまざまなデータ処理が可能になります。
コメント