質問

私のコード:

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))
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top