os.path.join和sqlite不能很好地融合在一起

时间:2014-06-04 22:14:16

标签: python sqlite os.path

Python 2.7(Windows)

    for root, dirs, files in os.walk(self.DiskLocation, topdown=False):
        for name in files:
            path = os.path.join(root, name)
            print path #check it's what we think it is
            self.cur.execute("SELECT * from myTable WHERE Path = ?", (path))

产生这个......

  

sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用1,并且提供了54。

我真的很困惑54提供的绑定是什么,直到我意识到我的路径变量是54个字符。但是为什么sqlite将它解释为一个很长的字符列表而不是字符串,我该如何阻止它呢?

1 个答案:

答案 0 :(得分:2)

execute的第二个参数是序列

你写了(path),但这些只是正则括号,所以它等同于path。字符串是其字符的序列,因此Python尽职尽责地传递您提供的序列中的所有54个字符。

你想要的是(path,),它是1个元素的元组。

使用逗号创建元组,括号。

如果这令人困惑,您可以使用[path];这里的名单也很好。 :)