Python操作MySQL校验ID存在时出现Not all parameters were used错误
错误原因
- Python数据库操作规范要求
cursor.execute()的第二个参数必须传入可迭代序列(元组、列表等),用于和SQL语句中的占位符一一匹配。你直接传入字符串Id时,程序会将字符串拆分为单个字符的序列作为参数列表,与SQL中仅有的1个占位符数量不匹配,因此触发报错。 - 代码存在游标变量不统一问题:执行SQL时使用
dbc游标,读取结果行数时却调用cursor对象,会导致后续判断逻辑失效。
修复方案
将传入的ID参数包装为元组或列表即可,单元素元组需要在末尾额外加逗号避免被识别为普通括号表达式,同时统一游标变量:
Id = "TEST" sql = """SELECT * FROM musics WHERE Id = %s""" # 两种参数写法都可生效 # 写法1:用元组传参 cursor.execute(sql, (Id,)) # 写法2:用列表传参 # cursor.execute(sql, [Id]) row = cursor.rowcount if row == 0: # ID不存在的业务逻辑 pass
内容的提问来源于stack exchange,提问作者asdasefsgd
相关产品推荐
相关产品推荐

