Python选择存在带有变量的SQLite3

时间:2013-09-16 20:53:10

标签: variables python-3.x sqlite exists

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

1 个答案:

答案 0 :(得分:1)

在Python中,将表达式包装在括号中没有任何区别,(icaocode)icaocode完全相同。

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

要告诉Python您想要一个包含单个元素的元组,您必须添加一个逗号:

c.execute("... WHERE ICAO = ?", (icaocode,))