我遇到了问题,但我无法解决
我编写了一个以元组为参数并执行此操作的函数:
def add_subject(name_stud, *data):
c.execute("INSERT INTO " + name_stud + " VALUES (?,?,?,?,?,?,?,?)",
data)
conn.commit()
我尝试在通过元组作为参数的类方法中调用此函数,但出现错误
add_subject(self.page1.student_name, data)
数据是那里的元组。
,错误是:
sqlite3.ProgrammingError:提供的绑定数不正确。当前语句使用8,并且提供了1。
在使用时我尝试打开包装,但仍然出现错误:
def add_subject(name_stud, data):
c.execute("INSERT INTO " + name_stud + " VALUES (?,?,?,?,?,?,?,?)",
*data)
conn.commit()
错误:
sqlite3.InterfaceError:绑定参数0出错-类型可能不受支持。
其他人的回答没有帮助我。 任何帮助将不胜感激。
答案 0 :(得分:1)
您已将参数data
声明为位置args,但仅传递了一个参数data
。这意味着最终参数将为(data,)
。您需要在通过时打开元组的包装,以填充位置args。
add_subject(self.page1.student_name, *data)
答案 1 :(得分:1)
由于将元组作为单个参数传递,因此不应在函数定义中编写*data
。只需将其声明为普通函数参数即可。
def add_subject(name_stud, data):
row = data
c.execute("INSERT INTO " + name_stud + " VALUES (?,?,?,?,?,?,?,?)",
data)
conn.commit()