在SQL代码中使用every_letter
。我使用了一个循环来分别提取letters
并在SQL代码中分别使用它们。但我犯了这个错误:
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.
我指定letters = [('a',), ('b',), ('c',), ('d',)]
必须保持不变,括号中没有变化。letters
实际上是先前cur.execute的结果。我用letters = cursor_test.fetchall()跟在scrape
后面得到它
你可以猜到,我想在sql代码中单独使用每个字母。因此,一旦a
的SQL代码,一旦b
的SQL代码,一旦c
的SQL代码,等等:自动,无需手动指定字母
我做错了什么?
conn = sqlite3.connect('...')
cur = conn.cursor()
letters = [('a',), ('b',), ('c',), ('d',)]
for every_letter in letters:
print("every_letter: ", every_letter)
cur.execute('''SELECT name, example1, example2
FROM TableExample
WHERE name = ?''', [every_letter])
1条答案
按热度按时间zour9fqk1#
您的代码尝试做的是向查询传递
tuple
。letters
的类型是list[tuple[str]]
您得到的错误意味着,确切地说,tuple[str]
可能不受支持。您是否正在尝试通过
tuple
?或者你只是想以“('a',)"的形式传递一个 string literal?在后一种情况下,您应该将列表中的每个元素都用字符串引号括起来。
这样,当您遍历
letters
中的每个元素时,您正在遍历一个可以由execute
方法处理的字符串列表。另一方面,如果您需要访问这些元组中的底层元素,则可以使用
comprehensions
。并在未打包的列表上重新排序。
如果
tuple
s包含 * 多个 * 元素,您可以进一步将tuple
解压缩到两个嵌套的解析中。