PythonでSQLiteとCSVファイルを連携させる方法

この記事では、Pythonを用いてSQLiteとCSVファイルの連携方法について詳しく説明します。具体的なコード例とその解説、応用例を含めています。

目次

はじめに

Pythonでデータベースやファイルを扱う場面は多いですが、その中でもSQLiteとCSVファイルの連携は非常に一般的です。こちらのガイドでは基本的な操作から応用テクニックまで幅広く紹介します。

必要な環境

Pythonのバージョンは3.xを推奨します。また、SQLiteを利用するためのライブラリはPythonに標準で組み込まれています。

SQLiteとCSVの基本的な連携方法

PythonでSQLiteとCSVファイルを連携させる最も基本的な方法は、`sqlite3`と`csv`モジュールを使用することです。

CSVデータをSQLiteにインポートする

# sqlite3モジュールをインポート
import sqlite3
# csvモジュールをインポート
import csv

# SQLiteデータベースに接続
conn = sqlite3.connect("example.db")

# カーソルオブジェクトを作成
c = conn.cursor()

# テーブルを作成
c.execute("CREATE TABLE IF NOT EXISTS example_table (name TEXT, age INTEGER)")

# CSVファイルを開く
with open('example.csv', 'r') as f:
    # CSVリーダーオブジェクトを作成
    csv_reader = csv.reader(f)
    for row in csv_reader:
        # テーブルにデータを挿入
        c.execute("INSERT INTO example_table VALUES (?, ?)", (row[0], row[1]))

# コミットして変更を保存
conn.commit()

# 接続を閉じる
conn.close()

コードの解説

1. `sqlite3`と`csv`モジュールをインポートしています。
2. SQLiteのデータベースに接続して、カーソルオブジェクトを作成します。
3. `CREATE TABLE`文でテーブルを作成しています。存在しない場合のみ新規作成されます。
4. CSVファイルを読み込み、それぞれの行をSQLiteのテーブルに挿入しています。
5. 最後に、コミットして変更を保存し、接続を閉じています。

SQLiteデータをCSVにエクスポートする

# sqlite3とcsvモジュールをインポート
import sqlite3
import csv

# SQLiteデータベースに接続
conn = sqlite3.connect("example.db")

# カーソルオブジェクトを作成
c = conn.cursor()

# CSVファイルを開く
with open('output.csv', 'w', newline='') as f:
    # CSVライターオブジェクトを作成
    csv_writer = csv.writer(f)
  
    # データを取得
    c.execute("SELECT * FROM example_table")
    rows = c.fetchall()

    # データをCSVに書き込む
    for row in rows:
        csv_writer.writerow(row)

コードの解説

1. まずは`sqlite3`と`csv`モジュールをインポートしています。
2. `SELECT * FROM example_table`でデータを取得しています。
3. `csv_writer.writerow(row)`で、取得したデータをCSVファイルに書き込んでいます。

応用例

例1: クエリ結果をCSVで出力

# SQLiteデータベースに接続
conn = sqlite3.connect("example.db")

# カーソルオブジェクトを作成
c = conn.cursor()

# CSVファイルを開く
with open('query_output.csv', 'w', newline='') as f:
    # CSVライターオブジェクトを作成
    csv_writer = csv.writer(f)

    # クエリを実行してデータを取得
    c.execute("SELECT name, age FROM example_table WHERE age > 20")
    rows = c.fetchall()

    # データをCSVに書き込む
    for row in rows:
        csv_writer.writerow(row)

例2: CSVファイルから特定のカラムだけをSQLiteにインポート

# SQLiteデータベースに接続
conn = sqlite3.connect("example.db")

# カーソルオブジェクトを作成
c = conn.cursor()

# CSVファイルを開く
with open('example.csv', 'r') as f:
    # CSVリーダーオブジェクトを作成
    csv_reader = csv.reader(f)
    for row in csv_reader:
        # nameカラムだけをテーブルに挿入
        c.execute("INSERT INTO example_table (name) VALUES (?)", (row[0],))

# コミットして変更を保存
conn.commit()

# 接続を閉じる
conn.close()

まとめ

PythonでSQLiteとCSVの連携は非常に簡単であり、多くの場面で役立ちます。この記事で示した基本的な操作から応用テクニックまで、しっかりと理解して活用してください。

コメント

コメントする

目次