0

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 将其解释为一长串字符而不是字符串,我该如何阻止它这样做呢?

4

1 回答 1

2

的第二个参数execute是一个序列

你写了(path),但那些只是普通括号,所以这相当于path. 字符串是它们的字符序列,因此 Python 会尽职地按照您提供的序列传递所有 54 个字符。

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

元组是用逗号而不是括号创建的。

如果这令人困惑,您可以使用[path]; 一个列表也可以。:)

于 2014-06-04T22:17:26.100 回答