6

我正在尝试使用 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": syntax error错误。

难道我做错了什么 ?

谢谢你的帮助。

4

3 回答 3

2

它给你一个语法错误,因为它是不允许的语法。从您的示例中,我认为架构可能是:

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

在这种情况下primary key意味着unique。但是,由于您允许自动生成uidthen 您并不关心它的价值是什么,您只是不希望重复labels 在这种情况下您实际上关心它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不是出于此问题的目的的示例名称,那么您应该使用更有意义的名称,因为这些名称非常不具信息性。

于 2010-07-19T14:35:12.513 回答
2

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

  • 创建唯一索引LABEL
  • 利用INSERT OR FAIL
  • 如果触发错误,则该行已经存在。
于 2010-07-19T14:14:38.683 回答
1
INSERT INTO DATA_TABLE(UID,LABEL) VALUES (NULL, "UK")  
WHERE NOT EXISTS(SELECT 1 FROM DATA_TABLE WHERE LABEL="UK");

您可以使用它来代替 INSERT OR FAIL。

于 2010-07-19T19:42:11.600 回答