Python向MySQL的Patient表插入数据时列数不匹配错误求助
错误原因分析
核心问题:列数与值数不匹配
你遇到的DataError: Column count doesn't match value count at row 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 (...)提供的值数量为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
相关产品推荐
相关产品推荐

