前置:

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



计数器


题:
任何想法如何让sqlite3引擎(如果效率更高)可以为我执行以下操作:


如果表“基线”已经具有带有主键“ 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。

关于python - PYTHON SQLITE3插入:如果存在,则进行添加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52043323/

10-12 06:24