当前位置: 首页 > news >正文

FastAPI + PyMySQL 报错:“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_id=None,
user_id=None,
em_id=chat_param.emId,
em_name=chat_param.emName,
question=deepseek_param,
answer=result_list, # 🚨 错误点:是 list 类型
json_answer=response, # 是 dict 类型
type=1
)
打印数据类型:

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_id=None,
user_id=None,
em_id=chat_param.emId,
em_name=chat_param.emName,
question=deepseek_param,
answer=json.dumps(result_list, ensure_ascii=False), # ✅ 处理 list
json_answer=json.dumps(response, ensure_ascii=False), # ✅ 处理 dict
type=1
)
这样就可以成功插入数据库了。

四、类型存储处理推荐表
数据类型 是否可直接插入数据库 推荐处理方式
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_ascii=False)
return obj
使用示例:
save_qa_record(
answer=to_json_str(result_list),
json_answer=to_json_str(response),

)
六、总结
❌ 不能将 list/dict 直接写入数据库;

✅ 必须用 json.dumps() 序列化为字符串;

相关文章:

  • ​​MQTT​​通讯:​​物联网
  • 【Torch】nn.GRU算法详解
  • Java 类加载机制详解
  • 高级版 Web Worker 封装(含 WorkerPool 调度池 + 超时控制)
  • 渗透测试指南(CSMSF):Windows 与 Linux 系统中的日志与文件痕迹清理
  • 【时时三省】(C语言基础)怎样定义指针变量
  • 无人驾驶汽车运动控制分为纵向控制和横向控制
  • 软件更新 | 从数据到模型,全面升级!TSMaster新版助力汽车研发新突破
  • AIGC工具平台-FishSpeech零样本语音合成
  • 用 GitHub Issues 做任务管理和任务 List,简单好用!
  • 《Redis高并发优化策略与规范清单:从开发到运维的全流程指南》
  • 关于变换矩阵的计算
  • 同源数据互补修复机制:从DNA修复到分布式系统的可靠性设计
  • fiddler+安卓模拟器,解决无网络、抓不到https问题
  • 【Linux网络编程】序列化与反序列化
  • 组件化设计核心:接口与实现分离(C++)
  • JAVA学习-练习试用Java实现“TensorFlow/Deeplearning4j:利用DL4J构建卷积神经网络进行图像分类”
  • ios签名错误的解决办法
  • 百胜软件胜券AI:打造智慧零售运营新范式
  • 布瑞琳BRANEW:高端洗护领航者,铸就品质生活新典范
  • 做购物网站公司/百度明星人气榜
  • 建网站大约得用多少钱/网站seo搜索
  • 自己做的网站加载慢/百度24小时人工客服
  • 西宁网站建设天锐科技/百度高级搜索页面
  • dreamweaver怎么做网站/优化设计官网
  • 沈阳网站建设024idc/工业和信息化部