【发布时间】:2022-08-13 22:16:59
【问题描述】:
我的 python 程序中的 sqlite 数据库有问题。我正在尝试创建一个保存玩家得分记录的表。播放器名称保存为变量“val”,该变量用于 sql 代码。此外,如果玩家已经在我的桌子上,我不想创建重复。
我的问题是,如果我不使用 WHERE {v}... 一切正常,但是当我试图阻止表创建重复项时,它会给我一个 OperationalError: near \"WHERE\": 语法错误。
我对 sql 很陌生,所以我很难找到我做错了什么。我使用 (?) 和格式,只要我不使用 WHERE 它就可以。如何确保我的 sql 代码之外的变量(玩家名称)不在我的表中,以便我可以插入它?
val = \"PlayerName\"
cur.execute( \"\"\"
INSERT INTO Table (player_name)
VALUES {v}
WHERE {v} NOT IN (
SELECT player_name FROM Table)\"\"\".format(v = val))
-
INSERT语句没有WHERE子句。您可以先执行SELECT来检查名称,也可以在name列上添加UNIQUE索引以在名称已经存在时强制出错(如果您的程序有多个并发用户,这会更安全)。 -
那天晚上晚些时候,我意识到我不能在这里使用 WHERE 子句,byte UNIQUE 根本没有帮助我。我不想强制出错,而是要正确创建我的表并继续我的程序,因为我的 sql 代码是在更大的 python 程序中实现的。
-
答案here 回答了您的问题吗?我认为
INSERT OR IGNORE可能是您想要的。