You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python操作sqlite3调用cursor.execute报最多2个参数却传4个错误如何解决

问题原因

sqlite3.Cursor.execute()方法最多仅支持接收2个位置参数:第一个为待执行的SQL语句,第二个是存放所有绑定参数的序列(元组/列表)或字典对象,不支持将多个绑定参数拆分为独立的位置参数传递。
你当前的代码把playe、leve、balance3个变量作为3个独立的位置参数传入,加上SQL语句总共传入了4个参数,超出方法的参数数量限制,因此触发TypeError: function takes at most 2 arguments (4 given)报错。
同时你当前的传入参数顺序和建表时的字段顺序不匹配:建表字段顺序为name、cash、level,你传入的参数顺序为name、level、cash,若不调整会导致字段值插入错位。

修正方案

将所有绑定参数放到元组/列表中作为第二个参数传入,同时调整参数顺序和表字段对应,插入完成后需要调用commit提交事务,否则数据不会持久化存储到数据库。

修正后完整代码
import sqlite3

connect = sqlite3.connect("Stats.db")
cursor = connect.cursor()

cursor.execute("""CREATE TABLE IF NOT EXISTS player(
    name TEXT,
    cash INT,
    level INT
)""")
connect.commit()

playe = input("Name: ")
balance = 10
leve = 0
# 绑定参数放入元组,调整顺序和表字段对应
cursor.execute("INSERT INTO player VALUES(?,?,?);", (playe, balance, leve))
# 提交插入事务
connect.commit()
# 操作完成关闭数据库连接
connect.close()

如果你不想调整参数顺序,也可以在SQL语句中显式指定插入字段:

cursor.execute("INSERT INTO player (name, level, cash) VALUES(?,?,?);", (playe, leve, balance))

内容的提问来源于stack exchange,提问作者FiolDoll

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:39:03