You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python向MySQL的Patient表插入数据时列数不匹配错误求助

错误原因分析

核心问题:列数与值数不匹配

你遇到的DataError: Column count doesn't match value count at row 1错误,本质是插入操作时指定的列数量和提供的值数量不一致,具体问题出在两处:

  1. 插入语句的列列表遗漏字段
    创建Patient表时定义了10个字段:ID,Token,Name,Phone,Email,Age,BG_needed,Quantity,Gender,Date,但你写的插入SQL只列出了9个字段(漏掉了Date):

    Insert into Patient(ID,Token,Name,Phone,Email,Age,BG_needed,Quantity,Gender) values (...)
    
  2. 提供的值数量为10个
    你的val元组包含10个值,最后一个'2022-10-01'对应Date字段,但插入语句没把Date列加入列表,导致列数(9)和值数(10)不匹配。

修复方案

给插入语句的列列表补上Date字段,修改后的代码如下:

sql = 'Insert into Patient(ID,Token,Name,Phone,Email,Age,BG_needed,Quantity,Gender,Date) values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'

另外还有两个小细节提醒:

  • Phone字段定义为int(10)不合理,电话号码可能包含前缀或超出int存储范围,建议改成varchar(20)类型。
  • 最后遍历cursor的代码不会输出内容,因为插入操作的cursor没有查询结果,若要查看表数据,需额外执行cursor.execute("SELECT * FROM Patient")后再遍历。

内容的提问来源于stack exchange,提问作者Thakshaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 18:40:32