PythonでCSVファイルとデータベースとの連携・データ交換の実現方法

この記事では、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ファイルとデータベースの連携・データ交換を行う方法には多くの応用が可能です。基本的な読み込みと書き込みから応用例まで解説しましたが、それらを組み合わせることでさまざまなデータ処理が可能になります。

コメント

コメントする

目次