Python使用SQLite3时conn.execute报参数数量错误如何解决?
错误原因
Python自带的sqlite3模块中,execute()方法的参数规则为:
- 第1个参数:待执行的SQL语句字符串,里面的动态值用占位符
?代替 - 第2个(可选)参数:所有占位符对应的取值组成的序列/元组
你当前的写法把两个动态值作为独立的第3、第4个参数传给了execute(),超出了方法支持的最大参数数量,因此触发TypeError报错。
另外你最初粘贴的代码中SQL语句末尾的id=后漏写了占位符?,也需要补充。
解决方法
将两个动态值包裹成元组,作为execute()的第二个参数传入即可,修正后的代码如下:
conn.execute("UPDATE instagram SET description_photo = ? WHERE id = ?", (self.inputDescriptionInstagram, self.idPhoto))
注意:如果是单占位符的场景,元组需要保留末尾逗号,写法为(单个取值,),避免被识别为普通变量。
内容的提问来源于stack exchange,提问作者Slavo Heys
相关产品推荐
相关产品推荐

