1

我将无法使以下代码正常工作。我知道如何在查询中使用 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.
4

1 回答 1

1

在 Python 中,将表达式括在括号中没有任何区别,(icaocode)icaocode.

execute方法需要某种参数列表,因此它将字符串视为四个字符的序列。

要告诉 Python 你想要一个具有单个元素的元组,你必须添加一个逗号:

c.execute("... WHERE ICAO = ?", (icaocode,))
于 2013-09-16T21:03:25.687 回答