我正在尝试查询我的sqlite3数据库并使用列表中的值。这是我的代码:
for i in range(len(infolist)):
result = cursor.execute('SELECT COUNT(DISTINCT col1)
FROM tablename
WHERE col2 = ?', (infolist[i]))
我收到此错误:
ProgrammingError:'提供的绑定数量不正确。当前语句使用1,并且提供了22个。'
该字符串有22个字符,这解释了为什么有22个绑定。显然,我没有正确地将字符串传递给SQL语句。
答案 0 :(得分:1)
您需要在(infolist[i])
的末尾添加一个逗号,现在它是一个22个字符的字符串而不是元组。 (infolist[i],)
应该解决这个问题
答案 1 :(得分:1)
cursor.execute的第二个参数是一个序列,你已经传递了一个字符串(这是一个字符序列)。如果您尝试执行1元素元组,则需要逗号。即('item',)
而不是('item')
此外,您应该遍历项目,而不是使用范围和i:
for info in infolist:
result = cursor.execute('SELECT COUNT(DISTINCT col1)
FROM tablename
WHERE col2 = ?', (info,))
答案 2 :(得分:0)
你需要添加一个逗号来表示元组有1个元素:
>>> ('abc')
'abc'
>>> ('abc',)
('abc',)
尝试将(infolist[i],)
传递给cursor.execute
。