JSONファイルをSQLiteデータベースに変換する方法:ステップバイステップガイド
JSONファイルをSQLiteデータベースに変換する方法
必要なもの
- Python 3.x
- SQLite 3
- JSONファイル
手順
必要なライブラリのインストール
pip install sqlite3
SQLiteデータベースの作成
import sqlite3 # データベースファイルの名前を指定 db_name = 'data.db' # データベース接続 conn = sqlite3.connect(db_name) # カーソルを取得 cursor = conn.cursor()
import json # JSONファイルの名前を指定 json_file = 'data.json' # JSONファイルを読み込む with open(json_file, 'r') as f: data = json.load(f)
JSONデータの構造は様々なので、解析方法は状況によって異なります。ここでは、例として単純な構造のJSONデータを扱うことにします。
# JSONデータから各レコードをループで処理 for record in data: # 各レコードから値を取り出す name = record['name'] age = record['age'] city = record['city'] # データベースにレコードを挿入 cursor.execute('INSERT INTO users (name, age, city) VALUES (?, ?, ?)', (name, age, city))
データベースのコミットとクローズ
# データベースの変更をコミット conn.commit() # データベース接続を閉じる conn.close()
補足
- 上記はあくまで基本的な例であり、実際の状況に合わせて調整する必要があります。
- JSONデータの構造が複雑な場合は、より高度なデータ処理ライブラリを使用する必要が ある場合もあります。
- データベースへの挿入処理を最適化したい場合は、バッチ処理などの手法を検討 する必要があります。
import sqlite3
import json
# データベースファイルの名前を指定
db_name = 'data.db'
# データベース接続
conn = sqlite3.connect(db_name)
# カーソルを取得
cursor = conn.cursor()
# JSONファイルの名前を指定
json_file = 'data.json'
# JSONファイルを読み込む
with open(json_file, 'r') as f:
data = json.load(f)
# テーブルを作成する
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL,
city TEXT NOT NULL
)
''')
# JSONデータから各レコードをループで処理
for record in data:
# 各レコードから値を取り出す
name = record['name']
age = record['age']
city = record['city']
# データベースにレコードを挿入
cursor.execute('INSERT INTO users (name, age, city) VALUES (?, ?, ?)', (name, age, city))
# データベースの変更をコミット
conn.commit()
# データベース接続を閉じる
conn.close()
print('JSONファイルをSQLiteデータベースに変換しました。')
このコードは、上記のチュートリアルで説明した手順を具体的に実装したものです。
- 最初に、
sqlite3
とjson
ライブラリをインポートします。 - 次に、データベースファイルの名前とJSONファイルの名前を定義します。
- その後、データベースへの接続とカーソルの取得を行います。
- JSONファイルを読み込み、データを変数に格納します。
- テーブルが存在しない場合は作成するSQLクエリを実行します。
- JSONデータから各レコードをループ処理し、値をデータベースに挿入します。
- 最後に、データベースの変更をコミットし、接続を閉じます。
実行方法
このコードを実行するには、以下の手順が必要です。
- Python 3.xをインストールします。
sqlite3
モジュールをインストールします。- 上記のコードをエディタに保存し、
data.json
という名前のJSONファイルを用意します。 - コマンドプロンプトで、以下のコマンドを実行します。
python convert_json_to_sqlite.py
JSONファイルをSQLiteデータベースに変換するその他の方法
SQLAlchemyは、Pythonでオブジェクト関係マッピング(ORM)を行うためのライブラリです。JSONファイルをORMモデルに変換し、それをSQLiteデータベースに挿入することができます。
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
# データベース接続文字列を指定
db_url = 'sqlite:///data.db'
# エンジンを作成
engine = create_engine(db_url)
# ベースクラスを作成
Base = declarative_base()
# ユーザーテーブルを定義
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(255), nullable=False)
age = Column(Integer, nullable=False)
city = Column(String(255), nullable=False)
# テーブルを作成
Base.metadata.create_all(engine)
# JSONファイルを読み込む
import json
json_file = 'data.json'
with open(json_file, 'r') as f:
data = json.load(f)
# JSONデータをUserオブジェクトに変換
users = []
for record in data:
user = User(name=record['name'], age=record['age'], city=record['city'])
users.append(user)
# ユーザーオブジェクトをセッションに追加
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
session.add_all(users)
# コミット
session.commit()
# セッションを閉じる
session.close()
jqを使う
jqは、JSONデータを処理するためのコマンドラインツールです。JSONファイルを加工し、SQLiteデータベースに挿入できる形式に変換することができます。
# JSONファイルを加工する
jq -r '.[] | {name: .name, age: .age, city: .city}' data.json > data.csv
# CSVファイルをSQLiteデータベースにインポート
sqlite3 data.db ".import data.csv users"
オンラインツールを使う
いくつかのオンラインツールを使って、JSONファイルをSQLiteデータベースに変換することができます。
- 少量のデータを扱う場合は、手動でコードを書く方が簡単かもしれません。
- 大量のデータを扱う場合は、SQLAlchemyやjqなどのツールを使う方が効率的です。
- プログラミングに慣れていない場合は、オンラインツールを使う方が簡単です。
json sqlite