Python Execute() 恰好接受 2 个参数(给定 3 个)

Python Execute() takes exactly 2 arguments (3 given)

我正在尝试使用以下代码将值插入到 SQLite 数据库中:

con.Execute('''UPDATE tblPlayers SET p_Level = ? WHERE p_Username= ? ''', (PlayerLevel,PlayerUsername))

这是执行函数:

def Execute(self,SQL):
    self.__connection.execute(SQL)
    self.__connection.comit()

我收到这个错误:

con.Execute('''UPDATE tblPlayers SET p_Level = ? WHERE p_Username= ? ''', (PlayerLevel,PlayerUsername)) TypeError: Execute() takes exactly 2 arguments (3 given)

您的 Execute() 方法只有两个参数,selfSQLself 参数由 Python 提供给绑定方法,因此只有 SQL 参数有空间:

def Execute(self,SQL):

但是你用一个额外的参数调用了绑定方法,而不仅仅是一个 SQL 参数:

con.Execute('''UPDATE tblPlayers SET p_Level = ? WHERE p_Username= ? ''',
            (PlayerLevel,PlayerUsername))

传入的元组值与自动插入的 self 参数和 SQL 参数一起构成 三个 .

如果您想支持 SQL 参数,您需要接受这些参数:

def Execute(self, SQL, params=()):
    self.__connection.execute(SQL, params)
    self.__connection.commit()

这一行表示您正在输入两个参数:

con.Execute('''UPDATE tblPlayers SET p_Level = ? WHERE p_Username= ? ''', (PlayerLevel,PlayerUsername))

将这 2 个参数添加到随实例自动传递的 implicit self 参数中,您现在有 3 个参数。

要么在调用它时保留 1 个参数,要么修改 Execute 的定义以容纳另外 1 个参数。