PythonとMySQLDB:完全に良いクエリで構文エラー?
-
29-10-2019 - |
質問
私のコード:
selectQ ="""SELECT * FROM %s WHERE %s = %%s order by RAND() limit %s""" % (self.table,self.columnSpecName,limit),
self.db.execute(str(selectQ),(idKey))
この例外が得られます:mysql_exceptions.ProgrammingError: (1064, "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 ''SELECT * FROM table WHERE person_oid = 16 order by RAND() limit 10',)' at line 1")
ただし、クエリをコピーしてMySQLを使用して実行すると、正常に実行されます。
私は何を見落としていますか?
解決
詳しく見る必要があります。
select * from table where person_oiod = 16 rand()limit 10 '、' at at line 1 "から '' select *を使用する構文")
そして、あなたはクエリの開始時に二重のアポストロフィを見るでしょう ,)'
それの終わりに。
selectQ ="""SELECT * FROM %s WHERE %s = %%s order by RAND() limit %s""" % (self.table,self.columnSpecName,limit),
self.db.execute(str(selectQ),(idKey))
あなたは最初の行の終わりにコンマを持っているので、それをタプルにします
それを削除すると、必要はありません str(selectQ)
2行目。
他のヒント
あなたは最初の行に多くのコンマを持っています(最後に):
selectQ ="""SELECT * FROM %s WHERE %s = %%s order by RAND() limit %s""" % (self.table,self.columnSpecName,limit),
self.db.execute(str(selectQ),(idKey))
に変更してください:
selectQ ="""SELECT * FROM %s WHERE %s = %%s order by RAND() limit %s""" % (self.table,self.columnSpecName,limit)
self.db.execute(str(selectQ),(idKey))
所属していません StackOverflow