You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向SQLite数据库已有用户行插入测验分数时出现WHERE附近语法错误

问题根因

你当前的语法错误来自SQL语句的逻辑误用:
INSERT 是插入全新行的语句,不支持搭配WHERE条件,这是直接触发语法报错的核心原因。你的需求是修改已存在账号的分数,应该使用UPDATE语句而非INSERT。

修复代码

首先确认你实际的表名,替换下方代码中的<实际表名>为你存储用户数据的表名称即可:

# UPDATE 语法:UPDATE 表名 SET 要修改的列=值 WHERE 匹配条件
conn.execute("UPDATE <实际表名> SET PlH = ? WHERE username = ?", (score, username))
conn.commit()
注意事项
  • SQLite中判断相等使用单个=即可,不需要写==,双等号属于非标准SQL写法,存在兼容风险
  • 参数绑定的顺序要和SQL语句中问号的出现顺序匹配:上述SQL先给PlH列赋值,所以第一个参数是score,第二个参数是匹配用户名的username
可选验证步骤

如果执行后分数没有正常更新,可以先运行查询语句确认对应用户确实存在于表中:

cursor = conn.execute("SELECT username, PlH FROM <实际表名> WHERE username = ?", (username,))
user_info = cursor.fetchone()
# 输出为None说明账号不存在,需要先执行INSERT语句插入新用户记录,再更新分数
print(user_info)

内容的提问来源于stack exchange,提问作者JoeBible

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:54:02