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

Syn*_*nia 3 python database sqlite binding

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

cur.execute("SELECT * FROM pending where user = ?", (ID))
Run Code Online (Sandbox Code Playgroud)

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.
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

kwa*_*ord 9

您必须为绑定提供一系列值.ID是一个字符串,所以它看起来像一个8个值的序列.

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