python - 使用 SQLite 和 Python 读取数据库 : Incorrect number of binding supplied

标签 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 的新手,所以我猜我只是在语法上犯了一个非常愚蠢的错误。然而,在网上搜索了一段时间后,我似乎找不到我所做的与其他人有什么不同。

任何帮助将不胜感激。或者,如果您需要更多代码,请告诉我。

谢谢

最佳答案

您必须为绑定(bind)提供一系列值。 ID 是一个字符串,所以它看起来像是一个由 8 个值组成的序列。

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

关于python - 使用 SQLite 和 Python 读取数据库 : Incorrect number of binding supplied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9986578/

相关文章:

python - 怎样才能得到收藏的收藏

python - Python + Twisted 中的消息队列代理

sql - 向数据库中的表添加列时出现 oracle 错误(错误 : 00604)

java - Android 中的 SQLite 按 AM/PM 时间排序

android - Sqlite db重新排列行

python - 在 python 中从 SQLite 数据库检索值的一些错误

python - Tkinter:当我在容纳按钮的框架旁边创建一个框架时,按钮会上下跳跃

python - PyCharm 未找到 Anaconda Python,给出 "can' t 打开文件 'python' : [Errno 2] No such file or directory?“

mysql - 简单的 SQL 连接理解?

database - 如何为此查询创建位图索引