0

ファイルから読み込んだファイルの情報をバイナリで保存しています。情報を保存するためにmysqlを使用しています。列の1つは、ファイルの絶対パスです。このコードは定期的に実行されるため、この特定のファイルが以前に解析されていないことを確認したいと思います。

私は実行しようとしています:

path = os.path.join(root,f)

sql = "SELECT * FROM %s WHERE Filepath = %s" % ("tntfiles", path)

しかし、役に立たない。「1064、「SQL構文にエラーがあります」というエラーが表示されます

パスの周りに`を付けて同じクエリを実行してみました。

path = "`" + path + "`'"

しかし、私は次のようになります:「1064、「SQL構文にエラーがあります」

同様のクエリを実行できるため、何をしているのかわかりません

"SELECT * FROM %s WHERE Id = %s" % ("tntfiles","1") 

そしてそれはうまく機能します。

ありがとう

4

2 に答える 2

0

MySQLでは文字列を「」または「」で囲む必要があるため、コードを次のように変更するだけです。

"SELECT * FROM %s WHERE Filepath = '%s'" % ("tntfiles", path)
于 2012-09-17T21:04:52.357 に答える
0
path = os.path.join(root,f)

sql = "SELECT * FROM tntfiles WHERE Filepath = %s"
cursor.execute(sql, (path,))

そうしないと、パス値が特殊文字に対して適切に引用されないか(可能性は低いですが)、正しくエンコードされない可能性があります(Unicodeおよび非ASCIIデータの可能性が高くなります)。

どうしても別のテーブル名に置き換えることができなければならない場合:

sql = "SELECT * FROM %s WHERE Filepath = %%s" % ("tntfiles",)
cursor.execute(sql, (path,))
于 2012-09-20T20:40:14.690 に答える