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