Python:当我在 SQL 代码中使用循环元素时出现问题。错误:sqlite3.InterfaceError:绑定参数 0 时出错 - 可能不受支持的类型

问题描述 投票:0回答:1

我想在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])
python python-3.x loops sqlite for-loop
1个回答
0
投票

您的代码尝试执行的操作是将

tuple
传递给查询。
letters
属于
list[tuple[str]]
类型 您得到的错误意味着,恰恰
tuple[str]
可能不受支持。

¿您是想传递

tuple
还是只想传递“(('a',)”形式的字符串文字

在后一种情况下,您应该将列表中的每个元素用字符串引号括起来。

letters = ["('a',)", "('b',)", "('c',)", "('d',)"]

这样,当您迭代

letters
中的每个元素时,您就是在迭代可以由
execute
方法处理的字符串。

© www.soinside.com 2019 - 2024. All rights reserved.