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

SQLite insert if not exist else increase integer value

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

这是我的 table 的样子:

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

每当我向数据库添加一个日期,并添加我想要的数量时,将数量添加到 table 中的 "quantity"。所以每个 "Date" 只会分配 1 "Quantity"。

举个小例子:

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

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

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

如果您希望每个日期只有一列,那么您应该将其声明为 UNIQUE,甚至作为 table 的 PRIMARY KEY。

如果这样做,那么您可以将数量列声明为 INTEGER NOT NULL DEFAULT 0。然后您的 table 将定义为:

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))