python - sqlite3.ProgrammingError : Incorrect number of bindings supplied. 当前语句使用了1个,提供了5个

标签 python sqlite

我一辈子都想不通为什么会失败,我知道丑陋的代码,但我只需要将它用于学校项目。

def changeusername(self,i):
    user="self.user=self.username"+str(i)+".get()"
    exec(user)
    print(self.user)
    record1=list(c.execute("SELECT * FROM logins WHERE usernames=(?)",(self.user)))
    print(record1)

我收到这个错误:

line 428, in changeusername
record1=list(c.execute("SELECT * FROM logins WHERE usernames=(?)",(self.user)))
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 5 supplied.

我可能错过了一些非常简单的东西,但是嘿 :P

编辑:它似乎适用于我的单个字符用户名,但是当我尝试使用 ADMIN 用户名时失败,因此有 5 个绑定(bind)

最佳答案

将参数作为元组传递给 execute()。替换:

c.execute("SELECT * FROM logins WHERE usernames=(?)", (self.user))

与:

c.execute("SELECT * FROM logins WHERE usernames=(?)", (self.user, ))

关于python - sqlite3.ProgrammingError : Incorrect number of bindings supplied. 当前语句使用了1个,提供了5个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33270534/

相关文章:

python - keras无法在docker容器上工作,但不会抛出错误

python - OpenCV 在加载之前检测图像文件是否是彩色的

python - python中的矩阵直积保留索引

sqlite - 使用 SQLite.Net.Async 的 Xamarin.Forms

SQL函数表插值

python - 在python数据帧中的每列的最大值之前找到一个值的索引

python - 在 Python 中,部分函数应用(柯里化(Currying))与显式函数定义

java - 对于 SQLite (Eclipse),将数据库从本地导入到模拟器,反之亦然

sql - 如果我有一个带有 where 子句的 sql 查询,当 `where` 上没有运算符时会发生什么?

c++ - 无法释放 Malloc 分配的内存