ToDoAgent / LLM /Database /update_Messagejson.py
Siyu Wang
updated to KK_Server
84ed1d1
import mysql.connector
from datetime import datetime # 导入 datetime 模块
import os
from pathlib import Path
import json
#Azure MySQL数据库连接
current_dir = Path(__file__).parent.absolute()
ssl_ca_path = current_dir / "DigiCertGlobalRootCA.crt.pem"
#写入json时对datetime类型进行序列化
def datetime_serializer(obj):
if isinstance(obj, datetime):
return obj.isoformat() # 将 datetime 转换为 ISO 8601 格式的字符串
raise TypeError("Type not serializable")
try:
# 建立数据库连接
cnx = mysql.connector.connect(
user="siyuwang541",
password="ToDoAgentASAP!1",
host="todoagent-databases.mysql.database.azure.com",
port=3306,
database="todoagent",
ssl_ca=str(ssl_ca_path),
ssl_disabled=False
)
print("数据库连接成功!")
# 测试查询
cursor = cnx.cursor()
cursor.execute("SELECT * FROM Messages")
# 获取表头(列名)
columns = [desc[0] for desc in cursor.description]
# 获取数据
rows = cursor.fetchall()
# 将表头和数据合并为字典列表
data = [dict(zip(columns, row)) for row in rows]
# 打印表头和数据
print("表头:", columns)
print("数据:")
for row in data:
print(row)
# 将数据写入 JSON 文件
with open("Messages.json", "w", encoding="utf-8") as file:
json.dump(data, file, ensure_ascii=False, indent=4, default=datetime_serializer) # datetime使用自定义序列化器
# 关闭连接
cursor.close()
cnx.close()
print("连接已正常关闭")
except mysql.connector.Error as err:
print(f"数据库错误: {err}")
except Exception as e:
print(f"发生异常: {str(e)}")