文字列化して、DBに書き出し、読み込みの例。
DBアクセスにはMySQL-Connectorを使用。
【Copilotの答えの始め】
以下は、PythonでJavaScriptから受け取ったJSON辞書の中のリストを文字列化し、MySQLデータベースに書き出し、再度読み込む例です。
前提
-
JSONデータ形式 (例):
1 2 3 4 |
{ "id": 1, "items": ["apple", "banana", "cherry"] } |
使用するライブラリ:
-
MySQL-Connector (
mysql.connector)
コード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
import json import mysql.connector # データベース接続 db = mysql.connector.connect( host="localhost", user="your_username", password="your_password", database="your_database" ) cursor = db.cursor() # テーブル作成(必要なら) cursor.execute(""" CREATE TABLE IF NOT EXISTS json_example ( id INT PRIMARY KEY, items TEXT ) """) # JavaScriptから受け取ったJSONデータを処理 data = { "id": 1, "items": ["apple", "banana", "cherry"] } # リストを文字列化 (JSON形式) items_str = json.dumps(data["items"]) # データベースに書き出し cursor.execute("INSERT INTO json_example (id, items) VALUES (%s, %s) ON DUPLICATE KEY UPDATE items=%s", (data["id"], items_str, items_str)) db.commit() # データベースから読み込み cursor.execute("SELECT * FROM json_example WHERE id = %s", (data["id"],)) result = cursor.fetchone() # データを元に戻す(文字列 → リスト) retrieved_items = json.loads(result[1]) # 出力確認 print("ID:", result[0]) print("Items:", retrieved_items) # クローズ処理 cursor.close() db.close() |
コード解説
-
データの文字列化 (
json.dumps) Pythonのリストや辞書を文字列に変換するためにjson.dumpsを使用します。 -
データベースへの保存 JSON文字列は
TEXT型のカラムに保存できます。キー重複時にはON DUPLICATE KEY UPDATEで更新処理を行っています。 -
データの復元 (
json.loads) 文字列を再びリストとして利用するため、json.loadsを使用しています。 -
SQLインジェクション防止 プレースホルダ (
%s) を使用することで、SQLインジェクションを防ぎ、安全なデータ挿入を実現しています。
必要に応じてデータベース設定やJSONフォーマットを調整してください。さらに発展的な部分を知りたい場合は教えてください!
【Copilotの答えの終わり】
retrieved_itemsをajaxで送信するプログラムとJavaScript側で元に戻すプログラム。
【Copilotの答えの始め】
以下は、Pythonから retrieved_items をAJAXを使ってJavaScriptに送信し、JavaScript側でデータを元に戻して処理するサンプルコードです。
Pythonサイド (Flaskを例にしたAPI)
1 2 3 4 5 6 7 8 9 10 11 12 |
from flask import Flask, jsonify app = Flask(__name__) @app.route('/get_data', methods=['GET']) def get_data(): # Pythonのリスト(retrieved_items)をJSONで返す retrieved_items = ["apple", "banana", "cherry"] return jsonify(retrieved_items) if __name__ == '__main__': app.run(debug=True) |
-
Flaskを使って簡単なAPIを作成しています。 -
/get_dataエンドポイントにリクエストが来ると、リストをJSON形式で返します。
HTML & JavaScript (AJAX部分)
1 2 3 4 5 6 7 8 9 10 11 12 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>AJAX Example</title> </head> <body> <button id="fetchButton">Fetch Data</button> <div id="output"></div> <script> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// ボタンがクリックされたときにデータを取得 document.getElementById("fetchButton").addEventListener("click", () => { fetch("/get_data") .then(response => response.json()) // JSONデータを取得 .then(data => { console.log("Received Data:", data); // データを復元する(この場合はリストとして利用可能) const retrievedItems = data; // 表示用の処理 document.getElementById("output").innerText = `Items: ${retrievedItems.join(", ")}`; }) .catch(error => console.error("Error:", error)); }); |
1 2 3 |
</script> </body> </html> |
コード解説
-
Python側
-
Flaskを使用してAPIを構築しています。
-
retrieved_itemsをJSON形式でクライアントに送信します。
-
-
JavaScript側
-
fetchを使ってPythonサーバーからデータをリクエストします。 -
JSON形式のレスポンスを受け取り、リストとして処理します。
-
joinを使ってリストをカンマ区切りで表示しています。
-
-
サーバーの起動
-
Flaskアプリを起動して、ブラウザでHTMLファイルを開いてください。ボタンをクリックするとデータが取得されます。
-
これで、PythonからJavaScriptへのデータ送信と処理の流れが実現できます!
【Copilotの答えの終わり】
風濤の迫り来るや春の雷
