做搜狗手机网站快,cdr做好排班怎么做网站,小程序导航wordpress,淘宝联盟的网站管理怎么做❌ FastAPI PyMySQL 报错 “dict can not be used as parameter” 问题及解决方案 最近在开发一个基于 FastAPI 的碳足迹因子智能匹配系统时#xff0c;后端保存接口数据到 MySQL 时遇到了如下错误#xff1a;
❌ 解析失败: dict can not be used as parameter 一、问题背景…❌ FastAPI PyMySQL 报错 “dict can not be used as parameter” 问题及解决方案 最近在开发一个基于 FastAPI 的碳足迹因子智能匹配系统时后端保存接口数据到 MySQL 时遇到了如下错误
❌ 解析失败: dict can not be used as parameter 一、问题背景复现 原始代码如下
save_qa_record( tenant_idNone, user_idNone, em_idchat_param.emId, em_namechat_param.emName, questiondeepseek_param, answerresult_list, # 错误点是 list 类型 json_answerresponse, # 是 dict 类型 type1 ) 打印数据类型
print(f 类型检查{type(result_list)})
输出class ‘list’
这是典型的 试图将 Python 的 list/dict 直接写入 MySQL 的错误用法。
二、错误原因分析 MySQL 的字段类型本质只支持基本数据类型如 VARCHAR、TEXT、INT 等而 list 或 dict 是 Python 内部的数据结构PyMySQL 并不会自动将其转换成字符串。
因此出现
TypeError: dict can not be used as parameter 三、解决方案 ✅ 使用 json.dumps 序列化 我们需要 先把 list/dict 序列化成 JSON 字符串
import json
save_qa_record( tenant_idNone, user_idNone, em_idchat_param.emId, em_namechat_param.emName, questiondeepseek_param, answerjson.dumps(result_list, ensure_asciiFalse), # ✅ 处理 list json_answerjson.dumps(response, ensure_asciiFalse), # ✅ 处理 dict type1 ) 这样就可以成功插入数据库了。
四、类型存储处理推荐表 数据类型 是否可直接插入数据库 推荐处理方式 str ✅ 是 无需处理 int/float ✅ 是 无需处理 list ❌ 否 json.dumps(list_obj) dict ❌ 否 json.dumps(dict_obj)
五、通用封装建议推荐 建议统一封装一个类型转换函数增强健壮性和可读性
def to_json_str(obj): if isinstance(obj, (dict, list)): return json.dumps(obj, ensure_asciiFalse) return obj 使用示例 save_qa_record( answerto_json_str(result_list), json_answerto_json_str(response), … ) 六、总结 ❌ 不能将 list/dict 直接写入数据库
✅ 必须用 json.dumps() 序列化为字符串