我无法使用以下代码。我知道如何在查询中使用python变量,但不知怎的,我无法做到这一点。当我在查询中硬编码'icaocode'变量时,查询工作正常,但如果我尝试使用变量则不行。这段代码有什么问题?
icaocode = input()
c.execute("SELECT EXISTS(SELECT 1 FROM airports WHERE ICAO = ?)", (icaocode))
if c.fetchone():
print("Found!")
else:
print("Not found...")
收到错误:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 4 supplied.
答案 0 :(得分:1)
在Python中,将表达式包装在括号中没有任何区别,(icaocode)
与icaocode
完全相同。
execute
方法需要某种 list 参数,因此它将字符串视为四个字符的序列。
要告诉Python您想要一个包含单个元素的元组,您必须添加一个逗号:
c.execute("... WHERE ICAO = ?", (icaocode,))