使用SQLite和Python从数据库读取:提供的绑定数量不正确

时间:2012-04-03 03:05:31

标签: python database sqlite binding

使用以下python脚本读出数据库:

cur.execute("SELECT * FROM pending where user = ?", (ID))

ID是某人的名字,在这种情况下是“Jonathan”。

但是,当我尝试运行此脚本时,我收到错误

Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/cherrypy/_cprequest.py", line 606, in respond
    cherrypy.response.body = self.handler()
  File "/usr/lib/pymodules/python2.7/cherrypy/_cpdispatch.py", line 25, in __call__
    return self.callable(*self.args, **self.kwargs)
  File "proj1base.py", line 470, in editFriends
    cur.execute("SELECT * FROM pending where user = ?", (ID))
ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 8 supplied.

我是SQLite的新手,所以我猜我在语法上犯了一个非常愚蠢的错误。然而,在网上搜索了一段时间之后,我似乎找不到与其他人不同的东西。

非常感谢任何帮助。或者如果您需要更多代码,请告诉我。

由于

1 个答案:

答案 0 :(得分:9)

您必须为绑定提供一系列值。 ID是一个字符串,因此它看起来像一个包含8个值的序列。

你可能认为(ID)应该是一个元素的元组,但事实并非如此。括号不是Python中的元组制作语法(空元组除外)。逗号是。使用(ID,)来获取包含一个元素的元组。或者,使用列表:[ID]