Python: SQLite3のデータを辞書型(ディクショナリ)に格納

SQLite3のデータをディクショナリに格納するサンプルコードと、 その実行結果を説明します。

DB接続にはwith文を使い、 テーブルのカラムは(ID, NAME)です。

サンプルコード

import sqlite3

def fetch_data_as_dict(db_path):
    query = "SELECT ID, NAME FROM your_table_name"
    
    with sqlite3.connect(db_path) as conn:
        cursor = conn.cursor()
        cursor.execute(query)
        
        # 結果をディクショナリのリストとして取得
        rows = cursor.fetchall()
        columns = [desc[0] for desc in cursor.description]  # カラム名の取得
        result = [dict(zip(columns, row)) for row in rows]
        
    return result

# データベースファイルのパス
db_path = 'example.db'

# データ取得
data = fetch_data_as_dict(db_path)

# 結果表示
for row in data:
    print(row)

コードの説明

  • sqlite3.connect(db_path) を with 文で使って、データベース接続を管理します。接続が終了すると、自動的に閉じられます。
  • cursor.execute(query) でクエリを実行し、cursor.fetchall() で結果を取得します。
  • cursor.description を使ってカラム名を取得します。
  • dict(zip(columns, row)) を使って、各行をディクショナリに変換し、それをリストに格納します。

実行結果

このコードを実行すると、SQLite3データベース内の your_table_name テーブルから ID と NAME カラムのデータを取得し、次のように表示します(サンプルデータが存在する場合):

{'ID': 1, 'NAME': 'Alice'}
{'ID': 2, 'NAME': 'Bob'}
{'ID': 3, 'NAME': 'Charlie'}

この結果は、テーブルに格納されているデータによって異なります。上記の結果は単なる例です。データベースの内容に応じて、ディクショナリの内容が変わります。

your_table_name には、実際のテーブル名を入れてください。また、db_path にはデータベースファイルのパスを指定してください。

Python