【问题标题】:python - sqlite InterfaceError: Error binding parameter 0 - probably unsupported typepython - sqlite InterfaceError:错误绑定参数0 - 可能不支持的类型
【发布时间】:2020-07-01 18:48:05
【问题描述】:

我正在使用 sqlite3 将值存储到数据库中,我的问题是我创建了行编辑,通过它我提取值并将其存储到变量并将此变量传递给插入查询,但是我在行值处遇到错误(?,? ,?,?,?)......如果我将值直接硬引用到变量中,它会保存到数据库中,我在做什么错误?请帮忙.......这是我的代码

            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()

我哪里错了?

【问题讨论】:

    标签: python-2.7 sqlite


    【解决方案1】:

    获取文本“le1.text()”的方法不会以字符串格式存储值。我遇到了同样的错误,发现我的数据类型不匹配。我将此值转换为字符串,它工作正常。

    也不要错过最后添加逗号,因为执行查询需要郁金香。

    self.queryCurs.execute('''INSERT INTO USER(USERNAME, PASSWORD, PERMISSION) 
            VALUES(?,?,?)''',(str(self.uname),str(self.passwd),str(self.permssn),))
    

    【讨论】:

      【解决方案2】:

      值应该放在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])
      

      【讨论】:

      • 不适合我,我已经测试了他的代码,只有当我像我的答案一样更改它时它才有效
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多