参数化查询在python和mysql数据库中不起作用

参数化查询在python和mysql数据库中不起作用,python,mysql,sql,Python,Mysql,Sql,这是我上面的代码,我正在使用变量id1给出的值尝试select语句,但它不起作用,并给出以下错误 回溯(最近一次呼叫最后一次): 文件“C:/Users/DELL/Desktop/PYTHON/module2/check.py”,第7行,在 当前执行(“从公司ID=%s的雇主处选择*,(id1)) 文件“F:\PYTHON\u 3.5\lib\site packages\mysql\connector\cursor\u cext.py”,执行中的第246行 prepared=self.\u cn

这是我上面的代码,我正在使用变量id1给出的值尝试select语句,但它不起作用,并给出以下错误

回溯(最近一次呼叫最后一次):
文件“C:/Users/DELL/Desktop/PYTHON/module2/check.py”,第7行,在
当前执行(“从公司ID=%s的雇主处选择*,(id1))
文件“F:\PYTHON\u 3.5\lib\site packages\mysql\connector\cursor\u cext.py”,执行中的第246行
prepared=self.\u cnx.prepare\u for\u mysql(参数)
文件“F:\PYTHON\u 3.5\lib\site packages\mysql\connector\connection\u cext.py”,第520行,位于prepare\u for\u mysql中
raise VALUERROR(“无法处理参数”)
ValueError:无法处理参数

(id1)
不是一个元素的元组,
id1
,它只是
id1
本身。元组由逗号组成,而不是paren;帕伦夫妇只是为了消除歧义。如果
id1
是一个字符串,这尤其令人困惑,因为字符串是它的字符序列,所以实际上在这里传递的是一个由4个参数组成的序列。请解释这一点,但链接的DUP也应解释这一点。如果不清楚,请告诉我,我们可能会找到更好的答案和/或改进解释。我从重复的问题中理解,答案是thanx太好了!顺便说一句,我知道很难在堆栈溢出上搜索现有答案,而且当您询问时,它显示的可能重复的列表通常是无用的。一个可能有帮助的技巧是使用
站点:stackoverflow.com[python]参数化查询不工作
搜索DuckDuckGo、Google,而不是在堆栈溢出本身的python标记中搜索
参数化查询不工作
import mysql.connector
conn=mysql.connector.connect(user="root",password="",host="localhost",port="3306",database="ddp")
cur=conn.cursor()
cur.execute('CREATE TABLE IF NOT EXISTS Employer( CompanyID varchar(5) PRIMARY KEY, CompanyName varchar(50) NOT NULL, City varchar(15))')
#cur.execute("INSERT INTO Employer(CompanyID,CompanyName, City) VALUES ('a123','TATA','MUMBAI')")
id1="a123"
cur.execute("SELECT * FROM Employer WHERE CompanyID = %s",(id1))
print(cur.fetchall())
#print(cur.description)
conn.commit()
cur.close()
conn.close()
Traceback (most recent call last):
  File "C:/Users/DELL/Desktop/PYTHON/module2/check.py", line 7, in <module>
    cur.execute("SELECT * FROM Employer WHERE CompanyID = %s",(id1))
  File "F:\PYTHON_3.5\lib\site-packages\mysql\connector\cursor_cext.py", line 246, in execute
    prepared = self._cnx.prepare_for_mysql(params)
  File "F:\PYTHON_3.5\lib\site-packages\mysql\connector\connection_cext.py", line 520, in prepare_for_mysql
    raise ValueError("Could not process parameters")
ValueError: Could not process parameters