在 SQLite 中插入时检查重复项
我正在尝试使用 Python 将数据插入 SQLite 数据库。
INSERT INTO DATA_TABLE(UID,LABEL) VALUES (NULL, "UK")
WHERE "UK" NOT EXISTS IN (SELECT LABEL FROM DATA_TABLE);
该查询是从 Python 动态生成的,我正在检查插入之前表中是否已存在该日期,并且它在 SQLite 数据库中不起作用。
出现此near“WHERE”:语法错误
错误。
我做错了什么吗?
感谢您的帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我很确定
INSERT
没有WHERE
子句 (文档没有提及任何内容)。您可以做什么:LABEL
上创建唯一索引,INSERT OR FAIL
I'm pretty sure that
INSERT
doesn't have aWHERE
clause (the documentation doesn't mention any). What you can do:LABEL
INSERT OR FAIL
它给你一个语法错误,因为它不是允许的语法。从您的示例中,我认为架构可能是:
在这种情况下,
主键
意味着唯一
。但是,由于您允许自动生成uid
那么您不关心它的值是什么,您只是不想要重复的label
在这种情况下您实际上关心label
是唯一的,所以这样告诉它:然后按预期工作:
顺便说一句,如果名称
data_table
、uid
和label
不是用于此问题的示例名称,那么您应该使用更有意义的名称,因为这些名称的信息量非常小。It is giving you a syntax error because it is not allowed syntax. From your example I presume the schema is probably:
in which case
primary key
impliesunique
. But, since you allow auto-generation ofuid
then you don't care what it's value is, you just don't want duplicatelabel
s in which case you actually care thatlabel
be unique so tell it so:which then works as expected:
Incidentally, if the names
data_table
,uid
, andlabel
aren't example names for the purposes of this question then you should use more meaningful names as these are horribly uninformative.您可以使用它来代替 INSERT OR FAIL。
you can use this instead of INSERT OR FAIL.