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() 序列化为字符串;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/911944.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/911944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决 “docker-compose: command not found“ 错误

解决 “docker-compose: command not found” 错误 在 CentOS 7 上看到这个错误&#xff0c;说明系统中未安装 docker-compose。以下是完整的安装和配置步骤&#xff1a; 一、安装 Docker Compose 1. 确保已安装 Docker # 检查 Docker 是否安装 docker --version# 如果未安…

Android11 深休后系统定时唤醒导致网络请求服务器过载

硬件平台&#xff1a;QCS6125 软件平台&#xff1a;Android11 问题&#xff1a;每天的7:00和22:00 服务器会突然收到批量设备的网络请求&#xff0c;导致服务器过载。 通过系统的logcat日志发现了系统在休眠后&#xff0c;每天会有22:00、7:00的唤醒&#xff0c;从而导致这个时…

部署网站需求全满足:Websoft9 多应用托管一站式方案解析

在数字化浪潮中&#xff0c;搭建专业网站已成为企业触达客户的核心通道。然而&#xff0c;从服务器选型到软件环境配置&#xff0c;传统建站模式往往让技术门槛成为中小企业的 “拦路虎”。Websoft9 多应用托管平台通过深度优化的镜像技术&#xff0c;重新定义了 WordPress 建站…

Spring Boot 启动优化实践

本文系统性分析并优化了一个Spring Boot项目启动耗时高达 280 秒的问题。通过识别瓶颈、优化分库分表加载逻辑、异步初始化耗时任务等手段&#xff0c;最终将启动耗时缩短至 159 秒&#xff0c;提升近 50%。文章涵盖启动流程分析、性能热点识别、异步初始化设计等关键技术细节&…

Jenkins执行Jenkinsfile报错

遇到部署的步骤时传输文件到其他服务器&#xff0c;文件传上去了&#xff0c;但是命令都没有执行成功。 写法&#xff1a; 报错了&#xff1a;ERROR:Exception when publishing,exception message [Exec exit status not zero.Status [1]] 原因是因为&#xff1a;cd 引用了环…

Modbus TCP转Profibus DP网接APM810/MCE安科瑞多功能电表通讯案例

Modbus TCP转Profibus DP网接APM810/MCE安科瑞多功能电表通讯案例 在工业自动化和电力监控领域&#xff0c;Modbus TCP与Profibus DP是两种常见的通讯协议&#xff0c;它们各自有着广泛的应用场景和优势。而当需要将这两者进行连接&#xff0c;以实现不同设备间的数据传输和信…

MySQL常见问题概述

一、MySQL常见问题概述 MySQL是最常用的关系型数据库&#xff0c;但使用中常会遇到 性能慢、数据丢失、主从不同步、锁冲突 等问题。这些问题可能导致系统响应变慢、用户操作失败&#xff0c;甚至数据损坏。 核心解决思路&#xff1a;先定位问题类型&#xff08;是查询慢&…

zlmediakit windows 编译webrtc

1、环境准备 系统环境&#xff1a;Windows 10 专业版 序号名称版本用途1Microsoft Visual Studio20222openssl3.0.53cmake3.24.04libsrtp2.4.0webrtc播放需要 2、安装libsrtp https://github.com/cisco/libsrtp/releases/tag/v2.4.2 2.1、新建构建目录 在libsrtp-2.4.2根目录…

Redis Pipelining 是性能加速的秘密武器?

在高性能的现代应用中&#xff0c;Redis 因其闪电般的速度而备受青睐。而 Pipelining&#xff08;管道技术&#xff09; 则是 Redis 性能优化的核心功能之一。许多开发者都听说过它能提升性能&#xff0c;但它究竟是如何做到的&#xff1f;是否会带来负面影响&#xff1f;今天我…

系统性能优化-6 TCP 三次握手

系统性能优化-6 TCP 三次握手 TCP 三次握手 客户端优化 客户端发送 SYN 给服务器 此时客户端连接状态&#xff1a;SYN_SENT如果服务器繁忙或中间网络不畅&#xff0c;客户端会重发 SYN&#xff0c;重试的次数由 tcp_syn_retries 参数控制&#xff0c;默认是 6 次&#xff0c;第…

WPF 实现自定义弹窗输入功能

1.前端实现 <Grid><Grid.RowDefinitions><RowDefinition Height"60" /><RowDefinition Height"*" /></Grid.RowDefinitions><BorderGrid.Row"0"BorderBrush"WhiteSmoke"BorderThickness"0.1&qu…

WPF中Converter基础用法

IValueConverter 1.创建一个类集成接口IValueConverter,并实现 2在xaml中引入 举例 性别用int来表示&#xff0c;1为男&#xff0c;2为女 核心代码 创建GenderConverter继承IValueConverter public class GenderConverter : IValueConverter {//model->view转换public…

Postgresql的json充当字典应用

一般我们会将一些系统参数放到参数表中&#xff0c;有些参数的值是json结构&#xff0c;那么如何在查询时引用这些参数&#xff1f;&#xff1f; 比如我在业务表的的xxx_type,或xxx_status记录的是key,又想在查询的时候显示其描述。 先定义字典 如下图如何应用 Postgresql对j…

Dify全面升级:打造极致智能应用开发体验,携手奇墨科技共拓AI新生态

智能应用开发平台Dify以六大核心功能升级与深度性能优化&#xff0c;重新定义AI开发效率与体验。本次更新不仅响应了开发者社区的迫切需求&#xff0c;更通过与云计算领域先锋奇墨科技的战略合作&#xff0c;为企业提供了从开发到部署的全链路智能化解决方案。 .技术领先&#…

关于uniapp开发阻止事件冒泡问题

背景。uniapp开发微信小程序。在使用两个组件拼接嵌套使用后&#xff0c;发现问题&#xff0c;会误操作跳转到更多页面。下图中两个事件若不使用stop修饰符&#xff0c;会相互影响。若点击uni-list-item会串行触发uni-card的handledoctorlist方法。 产生上面问题原因是组件之间…

箭头函数和普通函数的区别?

箭头函数&#xff08;Arrow Functions&#xff09;和普通函数&#xff08;传统函数&#xff09;在 JavaScript 中有显著的区别&#xff0c;主要体现在语法、this 的绑定、构造函数行为、参数处理等方面。以下是详细对比&#xff1a; 1. 语法差异 普通函数&#xff1a; functio…

Linux系统日志与守护进程开发实战指南

Linux系统日志与守护进程开发实战指南 系统日志与守护进程 ├── 系统日志syslog │ ├── 日志路径: /var/log/syslog │ └── 核心API │ ├── openlog │ ├── syslog │ └── closelog └── 守护进程daemon└── 创建步骤├── um…

Vue.js 过滤器详解

Vue.js 过滤器详解 下面我将详细讲解Vue.js中过滤器的语法和使用注意事项&#xff0c;并提供一个完整的演示页面。 过滤器基本概念 在Vue.js中&#xff0c;过滤器&#xff08;Filters&#xff09; 是用于文本格式化的功能&#xff0c;可以在双花括号插值和v-bind表达式中使用…

【iOS】iOS崩溃总结

【iOS】iOS崩溃总结 一、前言 之前写了一篇博文《【Flutter】程序报错导致的灰屏总结》&#xff0c;浏览量、收藏率和点赞量还挺高&#xff0c;还被收录了&#xff0c;就想着总结一下iOS崩溃&#xff0c;这个也是在iOS面试中经常被问到的。 在 iOS 开发过程中&#xff0c;导致…

机器学习:特征向量与数据维数概念

特征向量与数据维数概念 一、特征向量与维数的定义 特征向量与特征类别 在机器学习和数据处理中&#xff0c;每个样本通常由多个特征&#xff08;Feature&#xff09; 描述。例如&#xff0c;一张图片的特征可能包括颜色、形状、纹理等&#xff1b;一个客户的特征可能包括年龄…