0

我正在存储有关从二进制文件中读取的文件的信息。我正在使用 mysql 来存储信息。其中一列是文件的绝对路径。此代码将定期运行,因此我想检查此特定文件之前是否未解析过。

我正在尝试执行:

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
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 回答
0

MySQL 需要用 ' 或 " 包围字符串 - 所以只需将代码更改为

"SELECT * FROM %s WHERE Filepath = '%s'" % ("tntfiles", path)
于 2012-09-17T21:04:52.357 回答