向MySQL数据库插入数据报错ValueError: Could not process parameters原因求解
报错原因
executemany方法要求传入的第二个参数是由参数组构成的可迭代对象,每组参数对应一次SQL执行。哪怕单次SQL仅需要传入1个参数,也需要把每个参数单独封装为元组或列表结构。- 你当前直接传入字符串列表作为参数,执行时会把每个字符串按字符拆分为多参数序列,和SQL语句里仅有的1个
%s占位符数量不匹配,因此触发参数处理错误。
解决方法
调整参数结构,将列表中的每个价格字符串封装为单元素元组即可,示例代码如下:
prices = ['$22,999', '$7,499', '$33,000', '$6,000', '$34,600', '$8,999', '$6,200', '$7,975'] # 转换为符合executemany要求的参数格式 params = [(price,) for price in prices] sql = "INSERT INTO abc (a) VALUES (%s)" mycursor.executemany(sql, params)
内容的提问来源于stack exchange,提问作者Hadi Mousavi Fakhr
相关产品推荐
相关产品推荐

