Skip to main content
 首页 » 编程设计

Python SQLITE3 插入 : if exist than make addition

2025年05月04日15三少

预发光:

我在 Sqlite3-DB 中有表“基线”。 表“基线”有以下列:

  1. 单词
  2. 柜台

问题: 任何想法如何让 sqlite3 引擎(如果它更有效)为我做以下操作:

  • 如果表“baseline”已经有一个主键为“word”的元素,则插入时不会替换该行,而是在旧计数器和新计数器之间进行添加。

示例

执行以下插入命令后:

"INSERT INTO  baseline(word, counter) VALUES 'bla', 1; " 
"INSERT INTO  baseline(word, counter) VALUES 'bla', 1; " 

我想从数据库中获取以下数据:

>>> "SELECT * FROM baseline;"  
'("bla", 2)' 

提前致谢=)

请您参考如下方法:

如果单词是主键,即:

CREATE TABLE baseline (word TEXT PRIMARY KEY, counter INTEGER); 

那么下面的方法就可以了:

INSERT OR REPLACE INTO baseline VALUES ( 
    'foo', 
    COALESCE((SELECT counter FROM baseline WHERE word='foo'), 0) + 1 
); 

COALESCE() 函数在表中存在单词时返回计数,否则返回 0。