【发布时间】:2019-03-30 20:36:10
【问题描述】:
我目前正在编写代码来分析交易卡,我将其存储在 SQLite 数据库中。下面列出了查询数据库以获取特定卡片的函数之一:
def colors_search(conn,deck_color,card_ID):
"""
Query all rows in the colors table
:param conn: the Connection object
:return:
"""
color = (deck_color,)
test = (color,card_ID)
sql = ''' SELECT Number
FROM Colors
WHERE Color=?
AND Card_ID=?'''
cur = conn.cursor()
cur.execute(sql,test)
number = cur.fetchall()
return number
当我尝试运行此函数时,我不断收到以下错误:
sqlite3.InterfaceError:错误绑定参数 0 - 可能是不受支持的类型。
这里指的是行
cur.execute(sql,test)
我觉得错误来自我尝试查询两个变量的方式,但我不确定。如果这是问题所在,我将如何格式化“sql”变量以接收两个参数? Deck_color 和 card_ID 变量是 分别是一个字符串和整数,并且在我的程序中会有所不同,所以我不能对其中任何一个进行硬编码。
或者,如果这不是问题,我该如何重新格式化它才能正常运行?谢谢!
【问题讨论】:
-
不,它来自
test,您需要打印。我怀疑color是来自先前查询的元组 -
等等,你实际上把它变成了一个元组。摆脱
color = (deck_color,)。它没有任何目的。这就是为什么查询失败并使其成为元组的原因,据我所知,除了导致此错误之外,它不会做任何事情。您的查询已经防止 SQL 注入。