插入数据至SQL表时触发ProgrammingError:SQL语句未使用全部参数
解决MySQL插入时的"Not all parameters were used"错误
你的代码存在两个关键问题引发了该错误:
- SQL语法错误:
INSERT INTO后的表名不需要加括号,原语句里的(Product_details)属于错误写法,会干扰SQL解析,间接导致参数匹配异常。 - 循环逻辑错误:
val是单条数据的6个字段值组成的列表,你用for values in val遍历的是每个单独的字段值,每次仅传给SQL一个参数,但SQL语句需要6个参数,这就造成了参数数量不匹配。
单条数据插入修正代码
# 修正表名的括号问题 sql = """INSERT INTO Product_details VALUES (%s, %s, %s, %s, %s, %s)""" val = [name, Spec, Ratings, Delivery, Discount, Price] # 直接执行单条插入,无需循环 engine.execute(sql, val)
多条数据批量插入代码
如果需要一次性插入多条产品数据,可将val改为嵌套列表,使用executemany方法:
sql = """INSERT INTO Product_details VALUES (%s, %s, %s, %s, %s, %s)""" # 每个子列表对应一条产品的完整数据 val = [ [name1, Spec1, Ratings1, Delivery1, Discount1, Price1], [name2, Spec2, Ratings2, Delivery2, Discount2, Price2] ] # 批量插入多条数据 engine.executemany(sql, val)
内容的提问来源于stack exchange,提问作者user17965151
相关产品推荐
相关产品推荐

