使用以下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的新手,所以我猜我在语法上犯了一个非常愚蠢的错误。然而,在网上搜索了一段时间之后,我似乎找不到与其他人不同的东西。
非常感谢任何帮助。或者如果您需要更多代码,请告诉我。
由于
答案 0 :(得分:9)
您必须为绑定提供一系列值。 ID
是一个字符串,因此它看起来像一个包含8个值的序列。
你可能认为(ID)
应该是一个元素的元组,但事实并非如此。括号不是Python中的元组制作语法(空元组除外)。逗号是。使用(ID,)
来获取包含一个元素的元组。或者,使用列表:[ID]
。