我正在存储有关我从二进制文件读入的文件的信息。我正在使用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")
它运作得很好。
由于
答案 0 :(得分:0)
MySQL需要将字符串包围在'或'中 - 所以只需将代码更改为
即可"SELECT * FROM %s WHERE Filepath = '%s'" % ("tntfiles", path)
答案 1 :(得分: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,))