SQLite插入如果不存在则增加整数值

时间:2015-03-02 17:52:10

标签: python sqlite exists not-exists

如果值不存在,我需要一种方法来插入一个值,如果它存在,我应该通过另一个变量增加该值。

这就是我的表格:

CREATE TABLE IF NOT EXISTS table(
      Id INTEGER PRIMARY KEY,
      Date TEXT,
      Quantity INTEGER

每当我向数据库添加日期时,如果我想要数量,请将数量添加到"数量"在表中。所以每个"日期"只有1"数量"分配

只是一个小例子:

INSERT INTO Table (Date, Quantity) VALUES('%s', Quantity+%s)) % ('12/5/2013', 20);

如果已经有类似的记录(' 12/5/2013',5) 这将是(' 12/5/2013',25)。

我发现了一个非常相似的问题,但我不明白,我如何使整数增加.. Another Question

1 个答案:

答案 0 :(得分:4)

如果您希望每个日期只有一列,则应将其声明为UNIQUE,或者甚至将其声明为表的PRIMARY KEY。

如果这样做,那么您可以将Quantity列声明为INTEGER NOT NULL DEFAULT 0.您的表将被定义为:

CREATE TABLE IF NOT EXISTS table (
    Date TEXT PRIMARY KEY,
    Quantity INTEGER NOT NULL DEFAULT 0
);

然后,当您想要添加到特定日期时,请运行:

# assuming 'db' is your sqlite3 database
date_to_insert = '12/5/2013'
amount_to_add = 20
db.execute('INSERT OR IGNORE INTO table(Date) VALUES(?)', (date_to_insert,))
db.execute('UPDATE table SET Quantity = Quantity + ? WHERE Date = ?', (amount_to_add, date_to_insert))