Python mysql.connector.errors.ProgrammingError:1054(42S22):“where子句”中的未知列“X”

Python mysql.connector.errors.ProgrammingError:1054(42S22):“where子句”中的未知列“X”,python,mysql-python,Python,Mysql Python,这是我的剧本: 导入mysql.connector def登录系统: db=mysql.connector.connecthost=127.0.0.1, 用户=根, passwd=, db=dbpython cursor=db.cursor 循环='true' while循环==“true”: 用户名=strinputUsername: 密码=strinputPassword: 如果cursor.executeSELECT*来自用户名=%s和密码=%s的用户%username,密码: 打印日志İ

这是我的剧本:

导入mysql.connector def登录系统: db=mysql.connector.connecthost=127.0.0.1, 用户=根, passwd=, db=dbpython cursor=db.cursor 循环='true' while循环==“true”: 用户名=strinputUsername: 密码=strinputPassword: 如果cursor.executeSELECT*来自用户名=%s和密码=%s的用户%username,密码: 打印日志İn 其他: 打印失败 db.commit 登录系统 我正在安装一个在线系统,但是我遇到了登录系统的问题。如何修复where子句中的未知列“x”,或者您是否有其他代码建议

如果cursor.executeSELECT*来自username=?密码=?值?、?用户名、密码: 我试着用这种方法做,但没有成功

回溯最近一次呼叫上次: 文件C:/Users/artun/PycharmProjects/DENEMELER/Login System.py,第21行,在 登录系统 文件C:/Users/artun/PycharmProjects/DENEMELER/Login System.py,第15行,登录系统 如果cursor.executeSELECT*来自用户名=%s和密码=%s的用户%username,密码: 文件C:\Users\artun\PycharmProjects\DENEMELER\venv\lib\site packages\mysql\connector\cursor.py,第569行,在execute中 self.\u handle\u resultself.\u connection.cmd\u querysmt cmd\U查询中的文件C:\Users\artun\PycharmProjects\DENEMELER\venv\lib\site packages\mysql\connector\connection.py,第553行 结果=self.\u handle\u resultself.\u send\u cmdServerCmd.QUERY,QUERY 文件C:\Users\artun\PycharmProjects\DENEMELER\venv\lib\site packages\mysql\connector\connection.py,第442行,位于\u handle\u result中 引发错误。获取例外数据包 mysql.connector.errors.ProgrammingError:1054 42S22:where子句中的未知列“oziboran123” 进程已完成,退出代码为1
这是代码的输出,但我希望代码的输出被登录或失败

考虑参数化,而不是字符串插值,这涉及到一个两步过程,即准备语句,然后执行绑定参数。下面使用执行调用的两个参数:cursor.executequery,params。另外,用户和密码在MySQL中,应该使用反勾号转义

请注意,mysql.connector API的参数占位符%s不应与Python的模字符串格式符号混淆,顺便说一句,它在Python中越少越好


考虑参数化,而不是字符串插值,它涉及一个两步过程,即准备语句,然后执行绑定参数。下面使用执行调用的两个参数:cursor.executequery,params。另外,用户和密码在MySQL中,应该使用反勾号转义

请注意,mysql.connector API的参数占位符%s不应与Python的模字符串格式符号混淆,顺便说一句,它在Python中越少越好

请尝试以下代码:

 """SELECT * FROM `users` WHERE `username` '{}' AND `password` '{}'""".format(username,password))
请尝试以下代码:

 """SELECT * FROM `users` WHERE `username` '{}' AND `password` '{}'""".format(username,password))

如果它们是字符串,您仍然必须在SQL查询中用引号将它们括起来,如下所示:从用户名=“%s”和密码=“%s”的用户中选择*用户名,密码我尝试了,但没有成功。即使我输入的信息正确,如果输入的信息不正确,则实际登录的结果应该是“失败”。程序现在确实给出了错误的输出如果它们是字符串,您仍然必须在SQL查询中用引号将它们括起来,如下面的SELECT*从用户名=“%s”和密码=“%s”的用户中选择。用户名,密码我试过了,但不起作用。即使我输入的信息正确,如果输入的信息不正确,则实际登录的结果应该是“失败”。程序现在确实给出了错误的输出