2017-05-30 120 views
2

我引用this page为了对我的数据库进行SELECT查询。不过,我得到这个错误:mysql.connector - 你的SQL语法有错误;在第1行'%s'附近

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s' at line 1 

这里的代码有问题的部分:

import mysql.connector 
cnx = mysql.connector.connect(user='xxxx', password='yyyy', 
           host='zzzz.us-west-2.rds.amazonaws.com', 
           database='iiii') 
cursor = cnx.cursor() 

# ... 

givenUsername = 'testUser123' 
checkUserAuthQuery = ("SELECT password FROM UserAuth WHERE username = %s") 
userAuthInfo = (givenUsername) 
cursor.execute(checkUserAuthQuery, userAuthInfo) 

# ... 

注:
- 当%s它的工作原理做一个INSERT查询。
- 此外,替换%s'testuser123'作品。

+3

您是否尝试使用'userAuthInfo'而不是字符串? –

+0

工作,谢谢@ IgnacioVazquez-Abrams。我从来没有想过这件事。 –

+1

好吧,DB-API 2.0确实指定第二个参数应该是要替换的一系列值,所以我会说连接器因为没有抛出有用的异常而出错。 –

回答

5

您错过了使元组变为userAuthInfo的逗号。将其更改为:

userAuthInfo = (givenUsername,) 
+1

这应该作为* many *缺少逗号Q/A之一的重复或作为简单的错字来关闭。 –

+0

@IljaEverilä我从我的手机中取出了答案,所以写出答案比搜寻重复更容易。如果你找到合适的重复目标,那么我会投票结束。 – Alasdair

+1

对不起,原来的语气。这是一个很好的人选,我认为:https://stackoverflow.com/questions/23600286/python-mysql-connector-database-query-with-s-fails。我已经对“打字错误”进行了投票,因此在此为您添加链接。 –

相关问题