Python SQLite多条件更新传参报错:execute最多接受2个参数
问题原因与解决方法
错误原因很明确:cursor.execute()方法仅接受最多2个参数——第一个是SQL语句字符串,第二个是包含所有占位符对应值的序列(元组/列表),你把6个变量单独作为参数传递,导致参数数量超标。
修正后的代码
把所有变量打包成一个元组(或列表)作为第二个参数传入:
try: cursor.execute( "UPDATE mytable SET field1 = ?, field2 = ?, field3 = ?, field4 = ? WHERE field5 = ? AND field6 = ?;", (var1, var2, var3, var4, var5, var6) ) # 务必提交事务,否则修改不会写入数据库 connection.commit() except Exception as e: Logging.Error("Exception "+str(e)) # 出错时回滚事务,避免数据不一致 connection.rollback()
补充说明
- 所有
?对应的参数必须放在同一个元组或列表中,不能分散传递 - SQLite默认不会自动提交事务,执行UPDATE操作后必须调用
connection.commit(),否则修改仅存在于当前会话,关闭连接后会丢失 - 异常处理中添加事务回滚,能有效避免部分执行导致的数据异常
内容的提问来源于stack exchange,提问作者Emerson Soares
相关产品推荐
相关产品推荐

