2

PythonでMySQLdbを使用しています

テーブル let table1 に 4 つのフィールドがあり、そのうちの 1 つは PRIMARY KEY であり、他は field2、field3、field4 であるとします。field2 は一意ではないため、このフィールドには同じ値を持つ行が多数あります。

ここで、field2=example の table1 から select field3,field4 をクエリすると、「s」の近くで MySQL 構文エラーが発生します。この 's' は 'select' に属します。
それをデバッグするために、クエリを実行時に出力し、MySQL シェルに貼り付けて、where 句に一致するすべての行を返しました。

ここに私の実際のpythonコードがあります

query = "select `field3`,`field4` from `" + atable + "` where `field2` = '"+avalue+"'"
cur.execute(query)
temp = cur.fetchall()



 Error:
_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 's' at line 1")
4

2 に答える 2

4

バッククォートを削除

query = "select field3,field4 from " + atable + " where field2 = %s"
cur.execute(query, (avalue,))
temp = cur.fetchall()
于 2013-07-21T12:18:05.410 に答える
0

falsetru の解決策はほぼ正しいですが、SQL クエリには小さな問題が 1 つあります。

元のクエリと関連するコードは次のとおりです。

query = "select field3,field4 from " + atable + " where field2 = %s"
cur.execute(query, (avalue,))
temp = cur.fetchall()

where 句の過去の部分に注意してください。ここでは文字列として%sがあるため、SQL を記述する正しい方法は次のようになります。

query = "select field3,field4 from " + atable + " where field2 = '%s'"

%sは一重引用符 ( ' ) 文字で囲まれていることに注意してください。

于 2013-07-21T13:38:17.090 に答える