我正在使用以下 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 的新手,所以我猜我只是在语法上犯了一个非常愚蠢的错误。然而,在网上搜索了一段时间后,我似乎找不到我所做的与其他人有什么不同。
任何帮助将不胜感激。或者,如果您需要更多代码,请告诉我。
谢谢
最佳答案
您必须为绑定(bind)提供一系列值。 ID
是一个字符串,所以它看起来像是一个由 8 个值组成的序列。
您可能认为 (ID)
应该是一个只有一个元素的元组,但事实并非如此。括号不是 Python 中的元组生成语法(空元组除外)。逗号是。使用 (ID,)
来获取一个只有一个元素的元组。或者,使用列表:[ID]
。
关于python - 使用 SQLite 和 Python 读取数据库 : Incorrect number of binding supplied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9986578/