to_sql报JSON错误实为误传DataFrame给json.dumps()真正问题常是连接失败、表不存在或列名含非法字符提速需设chunksize和methodmulti中文乱码须三处utf8mb4一致datetime问题源于时区不匹配或类型不兼容。to_sql 写不进 MySQL报 TypeError: Object of type DataFrame is not JSON serializable这不是 to_sql 的错是误把整个 DataFrame 当作参数传给了 json.dumps() 类函数比如用了 logging.info(df) 或自定义装饰器。to_sql 本身不涉及 JSON 序列化。真正卡住的常见原因是连接没建好或表结构不匹配。检查三件事sqlalchemy.create_engine() 的 URL 是否包含正确用户名、密码、数据库名且 MySQL 服务正在运行目标表是否存在如果 if_existsfail默认表存在就直接报错不是 JSON 错列名是否含空格、中文或特殊符号MySQL 默认不支持会触发底层 SQL 构造失败错误信息可能被吞掉表现像“莫名报错”to_sql 插入速度慢10 万行要几分钟默认是逐行 INSERT网络往返多、事务开销大。提速关键在两个参数加 chunksize1000分批提交减少单次 SQL 长度和事务压力设 methodmulti用 INSERT INTO ... VALUES (),(),() 批量语法比单条快 5–10 倍避免 indexTrue 写入索引列除非真需要若写入已有主键表确保 df 索引与主键类型一致比如 int64 对 MySQL BIGINT否则隐式转换拖慢插入示例df.to_sql(my_table, engine, if_existsappend, chunksize1000, methodmulti)立即学习“Python免费学习笔记深入”中文乱码、emoji 存成问号或报 Incorrect string value根本原因不是 Pandas是 MySQL 连接层和表字符集没对齐。三个地方必须都是 utf8mb4 ARTi.PiCS ARTi.PiCS是一款由AI驱动的虚拟头像生产器可以生成200多个不同风格的酷炫虚拟头像