【问题标题】:Sqlite3.InterfaceError: Error binding parameter 1Sqlite3.InterfaceError:错误绑定参数1
【发布时间】:2018-04-06 18:28:10
【问题描述】:

我正在尝试更新用户名 = 的用户排名表?和 FlashcardID = ?。我将用户名从 ?到一个真正的价值,它的工作,但当我把它改回来它给了我一个错误。

这是我的代码 -

connection.execute ("UPDATE UserRank SET CorrectScore = CorrectScore + 1 WHERE User = ? AND FlashcardID = ?",(self.username, self.id[self.currentQ]))

我得到的错误如下 -

Sqlite3.InterfaceError:错误绑定参数 1 - 可能 不支持的类型。

编辑到这个 -

connection.execute ("UPDATE UserRank SET CorrectScore = CorrectScore + 1 WHERE User = '?' AND FlashcardID = ?",(self.username, self.id[self.currentQ]))

而更改的错误是 -

sqlite3.ProgrammingError:提供的绑定数量不正确。这 当前语句使用 1,并且提供了 2。

【问题讨论】:

标签: python sql sqlite


【解决方案1】:

更新

读取 cmets 您正尝试将整数 123 与用户名进行比较。这就是它不能绑定参数1的原因。

按照 cmets 中的建议,查看 self.username 字段。 如果您需要比较它,

使用第一个查询(这很好),但将123 转换为字符串:

connection.execute ("UPDATE UserRank SET CorrectScore = CorrectScore + 1 WHERE User = ? AND FlashcardID = ?",( str(self.username), self.id[self.currentQ]))

它可能对你有用。

【讨论】:

  • 我认为这样使用的参数没有必要。
  • 我也不确定,@Joseph 否则在查询前检查参数。
  • @Joseph print(repr(self.username)) 告诉我们它显示了什么。
  • @Joseph 您可以使用新错误更新问题。
  • @khelwood 它返回“123”
【解决方案2】:

它正在调用一个元组,因此为了解决这个问题,我所做的只是将元组放入一个名为 self.fid 的新变量中,然后它就可以工作了。

self.fid = self.id[self.currentQ][0]

connection.execute ("UPDATE UserRank SET CorrectScore = CorrectScore + 1 WHERE User = ? AND FlashcardID = ? ",([self.username]+[self.fid])

【讨论】:

    猜你喜欢
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多