【问题标题】:sqlite3.OperationalError: unrecognized token: "7nbtkq"sqlite3.OperationalError:无法识别的令牌:“7nbtkq”
【发布时间】:2019-09-13 16:39:18
【问题描述】:

我正在尝试将数据插入到我的 SQL 数据库中,但是收到以下错误:

sqlite3.OperationalError:无法识别的令牌:“7nbtkq”。

请注意,值 7nbtkq 是我尝试更新的数据之一的公钥。

我查看了其他几个解决方案,但它们要么是不适用于我的不同方案,要么它们的解决方案对我不起作用。

sql = """UPDATE parent_reply SET parent_id = '{}', comment_id = '{}', parent = '{}', comment = '{}', subreddit = {}, unix = {}, score = {} WHERE parent_id ={};""".format(parentid, commentid, parent, comment, subreddit, int(time), score, parentid)
c.execute(sql)

我希望我的 SQL 数据库能够使用相应记录中的这些新值进行更新。

【问题讨论】:

  • SET parent_id = '{}' ... WHERE parent_id ={} 看起来占位符之一是错误的。不应该都用引号括起来吗?
  • 顺便说一句,为什么用它当前的值更新 parent_id?
  • @Serg 我真的只是想更新评论 ID 等数据。你认为我应该删除 `SET parent_id = '{}' . . . WHERE parent_id = '{}' 中的parent_id = '{}',因为无论如何它必须是由于 WHEN ?
  • 我认为没有理由在 SET 子句中包含 parent_id = '{}'
  • @Serg 好的,感谢您的帮助!

标签: python sql sqlite


【解决方案1】:

我认为您应该将'' 赋予除int 之外的每个值:

sql = """UPDATE parent_reply SET parent_id = '{}', comment_id = '{}', parent = '{}', comment = '{}', subreddit = '{}', unix = {}, score = '{}' WHERE parent_id ='{}'""".format(parentid, commentid, parent, comment, subreddit, int(time), score, parentid)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 2021-01-05
    相关资源
    最近更新 更多