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