向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
相关产品推荐
相关产品推荐

