在SQLite中插入时检查重复

我正在尝试使用Python将数据插入到SQLite数据库中。

INSERT INTO DATA_TABLE(UID,LABEL) VALUES (NULL, "UK") WHERE "UK" NOT EXISTS IN (SELECT LABEL FROM DATA_TABLE); 

这个查询是从Pythondynamic生成的,我正在检查插入之前表中是否已经存在date,并且它不在SQLite数据库中工作。 获取这个near "WHERE": syntax error错误。

难道我做错了什么 ?

谢谢你的帮助。

我很确定INSERT没有WHERE子句( 文档没有提到任何 )。 你可以做什么:

  • LABEL上创建一个唯一的索引
  • 使用INSERT OR FAIL
  • 如果这触发了一个错误,行已经存在。

这是给你一个语法错误,因为它是不允许的语法 。 从你的例子,我认为模式可能是:

 create table data_table (uid integer primary key autoincrement. label string); 

在这种情况下, primary key意味着unique 。 但是,既然你允许自动生成uid那么你不在乎它的价值是什么,你只是不想要重复的label在这种情况下,你真正关心的label是唯一的,所以告诉它:

 create table data_table (uid integer primary key autoincrement, label string unique on conflict fail); 

然后按预期工作:

 sqlite> insert into data_table (label) values ("uk"); sqlite> insert into data_table (label) values ("uk"); Error: column label is not unique sqlite> select * from data_table; 1|uk 

顺便说一下,如果名称data_tableuidlabel不是针对此问题的示例名称,那么您应该使用更有意义的名称,因为这些名称是非常不可信的。

 INSERT INTO DATA_TABLE(UID,LABEL) VALUES (NULL, "UK") WHERE NOT EXISTS(SELECT 1 FROM DATA_TABLE WHERE LABEL="UK"); 

你可以使用这个来代替INSERT OR FAIL。