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个字符。但为什么SQLite将其解释为一个长长的字符列表而不是字符串,以及如何停止执行此操作?

有帮助吗?

解决方案

生成的第二个参数是序列

你写了execute,但是那些只是常规括号,所以它相当于生成透明度agcode。字符串是其字符的序列,因此Python在您提供的序列中尽职尽责地传递所有54个字符。

您想要的是生成的,这是一个元素为1个元素。

元组是用逗号, not 括号创建。

如果这令人困惑,你可以使用(path);清单也很好。:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top