Python-MySQL报错:第1行列数与值数量不匹配,求排查
解决MySQL插入错误:Column count doesn't match value count at row 1
嘿,这个错误我太熟了,一眼就揪出问题所在——你的SQL插入语句里列名的分隔符写错啦!
看你这段代码里的核心SQL部分:
cursor.execute("Insert into users(name,email.username,password) values(%s,%s,%s,%s)",(name,email,username,password))
注意到email.username这里了吗?你把分隔列名的逗号写成了点号!这就导致MySQL把email.username当成单个列名,而不是email和username两个独立列。这样一来,你声明的列数变成了3个(name、email.username、password),但你传入了4个值(name、email、username、password),列数和值数对不上,自然就触发这个错误了。
修正后的代码
把点号改成逗号就行,调整后的完整代码如下:
name = form.name.data email = form.email.data username = form.username.data password = sha256_crypt.encrypt(form.password.data) cursor = mysql.connection.cursor() # 这里把email.username修正为email, username cursor.execute("INSERT INTO users(name, email, username, password) VALUES(%s, %s, %s, %s)", (name, email, username, password)) mysql.connection.commit() cursor.close()
额外小建议
- 写SQL时尽量把列名和对应的值对齐排版,这类拼写错误会更容易被发现
- 建议用大写书写SQL关键字(比如
INSERT INTO、VALUES),和变量名做区分,代码可读性会更好
内容的提问来源于stack exchange,提问作者Ayd谋n Vardar
相关产品推荐
相关产品推荐

