PythonでMySQLとJSONデータの処理と変換をする方法

この記事では、Pythonを用いてMySQLとJSONデータの処理と変換について解説します。具体的なコード例やその解説、さらには応用例を含めて、深い理解と応用能力の向上を目指します。

目次

MySQLとJSONデータの基本

MySQLは関係データベース管理システムの一つであり、JSON(JavaScript Object Notation)はデータ交換用のテキスト形式です。これらのデータ形式を相互に変換することで、多くの便益があります。例えば、Web APIから取得したJSONデータをMySQLに格納する、またはその逆の処理などがあります。

必要なライブラリ

Pythonでこれらの処理を行うには、`mysql-connector-python`と`json`というライブラリが必要です。

# ライブラリのインストール
pip install mysql-connector-python

MySQLからJSONへの変換

MySQLのテーブルデータをPythonを使ってJSON形式に変換する基本的な手順とコードを見ていきましょう。

基本的なコード

import mysql.connector
import json

# MySQLに接続
conn = mysql.connector.connect(
    host="localhost",
    user="root",
    password="password",
    database="mydatabase"
)

# カーソルオブジェクトの生成
cursor = conn.cursor()

# SQLクエリの実行
cursor.execute("SELECT * FROM mytable")

# データの取得
rows = cursor.fetchall()

# 辞書リストに変換
dict_list = []
for row in rows:
    dict_list.append({
        'id': row[0],
        'name': row[1],
        'age': row[2]
    })

# JSON形式に変換
json_data = json.dumps(dict_list, ensure_ascii=False)

print(json_data)

# リソースの解放
cursor.close()
conn.close()

コードの解説

1. `mysql.connector`と`json`ライブラリをインポートします。
2. MySQLに接続するための情報を設定します。
3. `cursor.execute()`でSQLクエリを実行します。
4. `fetchall()`で全ての行を取得します。
5. 取得したデータを辞書のリストに変換します。
6. `json.dumps()`でJSON形式に変換します。

JSONからMySQLへの変換

次に、JSONデータをMySQLのテーブルに格納する手順について解説します。

基本的なコード

import mysql.connector
import json

# JSONデータの読み込み
with open('data.json', 'r', encoding='utf-8') as f:
    json_data = json.load(f)

# MySQLに接続
conn = mysql.connector.connect(
    host="localhost",
    user="root",
    password="password",
    database="mydatabase"
)

# カーソルオブジェクトの生成
cursor = conn.cursor()

# データの挿入
for item in json_data:
    cursor.execute(
        "INSERT INTO mytable (id, name, age) VALUES (%s, %s, %s)",
        (item['id'], item['name'], item['age'])
    )

# コミット
conn.commit()

# リソースの解放
cursor.close()
conn.close()

コードの解説

1. `json.load()`でJSONファイルを読み込みます。
2. `cursor.execute()`でデータをMySQLに挿入します。
3. `conn.commit()`で変更を確定します。

応用例

例1:MySQLデータのフィルタリングとJSON出力

# SQLクエリでフィルタリングしたデータをJSONに変換
cursor.execute("SELECT * FROM mytable WHERE age >= 20")
filtered_rows = cursor.fetchall()

filtered_dict_list = [ {'id': row[0], 'name': row[1], 'age': row[2]} for row in filtered_rows ]
filtered_json_data = json.dumps(filtered_dict_list, ensure_ascii=False)

print(filtered_json_data)

例2:JSONデータの一部をMySQLに保存

# JSONデータから特定のキーのみをMySQLに保存
for item in json_data:
    if 'age' in item:
        cursor.execute(
            "INSERT INTO mytable_age_only (age) VALUES (%s)",
            (item['age'],)
        )

conn.commit()

まとめ

この記事では、Pythonを用いてMySQLとJSONデータの相互変換について詳しく解説しました。基本的な手法から応用例まで、実際のコードとその解説を交えながら説明しました。この知識が、データ処理の幅を広げる一助となれば幸いです。

コメント

コメントする

目次