2017-05-30 12 views
2

私のデータベースにSELECTクエリを作成するには、this pageを参照しています。しかし、私はこのエラーを取得しています: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では、2番目の引数を置換する値のシーケンスにする必要があるため、有用な例外をスローしないためにコネクタにエラーがあると言います。 –

答えて

5

userAuthInfoをタプルにするカンマがありません。それを次のように変更してください:

userAuthInfo = (givenUsername,) 
+1

これは、*多数の*カンマQ/Aの欠落のいずれかの複製として、または単純な入力ミスとして閉じられるべきです。 –

+0

@IljaEverilä私は自分の電話から答えを出したので、答えを書くのは重複を探すよりも簡単でした。適切な重複したターゲットを見つけたら、私は投票に投票します。 – Alasdair

+1

元の音色に申し訳ありません。ここには良い候補があります:https://stackoverflow.com/questions/23600286/python-mysql-connector-database-query-with-s-fails私はすでに「typo」に投票していましたので、あなたのためにここにリンクを追加してください。 –

関連する問題