我正在使用sqlite3将值存储到数据库中,我的问题是我创建了lineedits,我通过它提取值并将其存储到变量并将此变量传递给插入查询但是我在行值上面得到了错误(?,? ,?,?,?)......如果我直接将值引用到变量,它会被保存到数据库中,我在做什么错误?请帮忙.......这是我的代码
self.uname = self.le1.text()
self.passwd = self.le2.text()
self.permssn = self.le3.text()
self.queryCurs.execute('''CREATE TABLE IF NOT EXISTS USER
(USERNAME TEXT NOT NULL, PASSWORD TEXT NOT NULL, PERMISSION TEXT NOT NULL)''')
self.queryCurs.execute('''INSERT INTO USER(USERNAME, PASSWORD, PERMISSION)
VALUES(?,?,?)''',(self.uname,self.passwd,self.permssn))
print ('inserted row')
self.createDb.commit()
我哪里错了?
答案 0 :(得分:0)
您从中获取文本" le1.text()"的方法不会以字符串格式存储该值。我得到了同样的错误,整理出我的数据类型不匹配。我将此值转换为字符串,它工作正常。
也不要错过最后添加逗号,因为执行查询需要郁金香。
self.queryCurs.execute('''INSERT INTO USER(USERNAME, PASSWORD, PERMISSION)
VALUES(?,?,?)''',(str(self.uname),str(self.passwd),str(self.permssn),))
答案 1 :(得分:-3)
值应该在touple(方括号)中,如下所示:
self.queryCurs.execute("INSERT INTO USER(USERNAME, PASSWORD, PERMISSION) VALUES(?,?,?)",[self.uname, self.passwd, self.permssn])
由于您以与表中的列相同的顺序添加值,因此您在查询中并不真正需要它们,因此这也将起作用:
self.queryCurs.execute("INSERT INTO USER VALUES(?,?,?)",[self.uname, self.passwd, self.permssn])