首页 > 解决方案 > 选择语句 | 1210:执行准备好的语句的参数数量不正确

问题描述

我希望我能在这里寻求帮助。我一直在阅读现有问题,但无法解决。

我已经在网上找了好几个小时,还多次重新访问我的代码,但我仍然无法使用 mysql 连接器在 python 中执行参数化的 SELECT 语句

我在执行 INSERT 时使用相同的语法,它工作正常这是我的工作 INSERT 片段

__cursor = __con.cursor(prepared=True)
__cursor.execute(self.query,self.values) 
__con.commit()
 

然后这是我的非工作 SELECT 语句

__cursor = __con.cursor(prepared=True)
__cursor.execute(self.query,self.query)
r = __cursor.fetchall()

这是我一开始传递的值。

#WORKING
params = {"type":"INSERT","query":"INSERT INTO behaviors (behavior_id,behavior_name,related_hosts) VALUES (%s, %s, %s)","values":("xfxsaf","behacior A","host b")}


#NOT WORKING
params= {"type":"SELECT","query":"SELECT %s FROM behaviors where related_hosts = '%s'","values":("behavior_id","host1",)}
#params passed to my Class
self.query = params.query
self.value = params.values

令我困惑的是它适用于 INSERT 但不适用于 SELECT。当我将值直接放在执行方法中时,我遇到了同样的问题:

__cursor.execute("""SELECT behavior_id FROM behaviors where related_hosts='%s';""",("*","host B"))

我通过打印出 isInstance() 验证了该值是一个元组

这是我从日志中得到的

  File "C:\Users\jgutierrez\AppData\Local\Programs\Python\Python38-32\lib\site-packages\mysql\connector\cursor.py", line 1208, in execute
raise errors.ProgrammingError(

mysql.connector.errors.ProgrammingError:1210:执行准备好的语句的参数数量不正确 2020-07-01 17:02:02,655 -DEBUG:query.py - 在第 77 行 - DB 连接已成功关闭

标签: pythonmysql

解决方案


推荐阅读