SQLiteとJSONデータの相互変換:完全ガイド

SQLiteとJSONは、データを格納するための人気のある形式です。しかし、これらの形式のデータを相互に変換する必要が生じた場合、どうすればよいのでしょうか。この記事では、Pythonを使用してSQLiteデータベースとJSONデータを相互に変換する方法を詳細に解説します。具体的なコード例とその解説、応用例を含めています。

目次

SQLiteとJSONの基礎知識

SQLiteは、軽量で高速なリレーショナルデータベースです。一方でJSON(JavaScript Object Notation)は、データ交換のフォーマットとして広く使用されています。この両方の形式の理解は、相互変換の前提となります。

SQLiteの特性

SQLiteは、サーバーが不要で、SQLクエリを使って容易に操作できます。また、ACID(Atomicity, Consistency, Isolation, Durability)特性を完全にサポートしています。

JSONの特性

JSONは、人間にとって読み書きが容易で、マシンにとっても簡単に解析・生成することができます。主にWeb APIでよく使われるデータ形式です。

SQLiteとJSONの相互変換に使用するPythonライブラリ

このガイドでは、Pythonの`sqlite3`と`json`モジュールを使用します。これらはPythonの標準ライブラリに含まれているため、追加のインストールは不要です。

SQLiteからJSONへの変換

SQLiteデータベースからデータを取得し、それをJSON形式に変換する方法を説明します。

基本的なコード例

import sqlite3
import json

# データベースに接続
conn = sqlite3.connect('example.db')
c = conn.cursor()

# SQLクエリでデータを取得
c.execute('SELECT * FROM users')
data = c.fetchall()

# データをJSON形式に変換
json_data = json.dumps(data)

print(json_data)

コード解説

このコードでは、まず`sqlite3`と`json`モジュールをインポートしています。次に、SQLiteデータベース`example.db`に接続し、`users`テーブルからデータを取得しています。最後に、`json.dumps()`関数を使用して取得したデータをJSON形式に変換しています。

JSONからSQLiteへの変換

JSONデータをSQLiteデータベースに挿入する方法を説明します。

基本的なコード例

import json
import sqlite3

# JSONデータ
json_data = '[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 40}]'

# JSONをPythonオブジェクトに変換
data = json.loads(json_data)

# データベースに接続
conn = sqlite3.connect('example.db')
c = conn.cursor()

# データを挿入
for item in data:
    c.execute("INSERT INTO users (name, age) VALUES (?, ?)", (item['name'], item['age']))

# 変更をコミット
conn.commit()

コード解説

このコードでは、JSONデータをPythonのリストとして解釈した後、そのデータをSQLiteデータベースに挿入しています。`json.loads()`関数でJSONデータをPythonオブジェクトに変換し、それを`sqlite3`でデータベースに挿入しています。

応用例

応用例1: 複数テーブルのデータを結合してJSONに変換

# SQLクエリで複数テーブルからデータを取得
c.execute('SELECT users.name, orders.amount FROM users JOIN orders ON users.id = orders.user_id')
data = c.fetchall()

# データをJSON形式に変換
json_data = json.dumps(data)
print(json_data)

応用例2: JSONデータの一部だけをSQLiteに挿入

# JSONデータから特定のキーの値だけを挿入
for item in data:
    if 'name' in item:
        c.execute("INSERT INTO users (name) VALUES (?)", (item['name'],))

# 変更をコミット
conn.commit()

まとめ

SQLiteとJSONの相互変換は、Pythonを使用して非常に簡単に行うことができます。この記事で紹介した基本的な方法と応用例を参考に、より複雑なデータ操作に挑戦してみてください。

コメント

コメントする

目次