os.path.join和sqlite没有很好地一起玩
题
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)
;清单也很好。:)
不隶属于 StackOverflow