0

MySQLdbを使用したpythonでは、次を実行しようとしています:

cur.execute("select COUNT(*) from adjacency where r = %d and c = %d)" % (curRow, curCol) 

rおよびcはテーブル内の整数フィールドでadjacencyあり、複合主キーも形成します。curRowそしてcurCol私のpythonプログラムの整数変数です。MySQLは不平を言っています:

_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 '%d and c = %d' at line 1") 

最終的に、 と に隣接する行が既に存在するかどうかを確認したいと思いr=curCowますc=curCol。その場合は、テーブル内のフィールドを更新します。それ以外の場合は、テーブルに行を挿入します。

  1. 準備されたステートメントの何が問題になっていますか?

すべてのヘルプは大歓迎です!

4

1 に答える 1

6

間違った場所にブラケットがあるようです。

変化する...

cur.execute("select COUNT(*) from adjacency where r = %d and c = %d)" % (curRow, curCol)

...に...

cur.execute("select COUNT(*) from adjacency where r = %d and c = %d" % (curRow, curCol))

...使用する方が安全ですが...

cur.execute("select COUNT(*) from adjacency where r = %s and c = %s", (curRow, curCol))

...これにより、潜在的な SQL インジェクションから保護されます。

于 2013-06-22T20:50:28.327 に答える