我想在Sql代码中使用
every_letter
。我使用循环来单独提取
letters
并在 SQL 代码中单独使用它们。但我遇到了这个错误:
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.
我指定
letters = [('a',), ('b',), ('c',), ('d',)]
必须保持这样,括号中不发生变化
正如你所猜到的,我想在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])
您的代码尝试执行的操作是将
tuple
传递给查询。 letters
属于 list[tuple[str]]
类型 您得到的错误意味着,恰恰 tuple[str]
可能不受支持。
¿您是想传递
tuple
还是只想传递“(('a',)”形式的字符串文字
在后一种情况下,您应该将列表中的每个元素用字符串引号括起来。
letters = ["('a',)", "('b',)", "('c',)", "('d',)"]
这样,当您迭代
letters
中的每个元素时,您就是在迭代可以由 execute
方法处理的字符串。