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

Python SQLite插入如果不存在,则增加整数值,python,sqlite,exists,not-exists,Python,Sqlite,Exists,Not Exists,我需要一种方法来插入一个值,如果该值不存在,那么它应该增加另一个变量的值 这就是我的桌子的样子: CREATE TABLE IF NOT EXISTS table( Id INTEGER PRIMARY KEY, Date TEXT, Quantity INTEGER 每当我向数据库中添加一个日期时,使用我想要的数量,将该数量添加到表中的“数量”中。因此,每个“日期”只能分配1个“数量” 举个小例子: INSERT INTO Table (Date, Qua

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

这就是我的桌子的样子:

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)

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

如果希望每个日期只有一列,则应将其声明为唯一的,甚至是表的主键

如果这样做,则可以将Quantity列声明为INTEGER NOT NULL默认值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))

你能在你链接的答案中具体说明你不明白的地方吗?
replace或insert
听起来非常自我解释。
coalesce
对我来说是新的,但根据文档,它返回传入的第一个非null参数,因此如果select返回null(因为给定日期还没有记录),则第二个参数用作回退。在您的情况下,您不需要
coalesce(选择val+1…,1)
而是类似于
coalesce(选择quantity+quantity…,quantity)
的功能,我声明日期是唯一的,Id是主要的。工作起来很有魅力。