2017-06-10 55 views
0

我有以下查询:转换MySQL查询SQLite的查询

INSERT INTO Test (Test1, Test2, Test3, Test4) VALUES (5, 5, 5, 55) ON duplicate KEY UPDATE Test1 = VALUES(5); 

这工作对MySQL的罚款,但我得到的SQLite的语法错误,我的问题(S)是:(1)如何将我转换这个查询与SQLite一起工作,同时提供它的功能(2)如何在重复的情况下更新多个字段?

+0

请用散文解释应该达到的目标。我的经验是用SQLite,我只能确认“看起来不像已知的语法”。提供合适的玩具数据库的'.dump'(从SQLite命令行工具)也是有帮助的。即某种[mcve]。 – Yunnosch

+0

[SQLite UPSERT - ON DUPLICATE KEY UPDATE]的可能重复(https://stackoverflow.com/questions/2717590/sqlite-upsert-on-duplicate-key-update) – hassan

回答

0

构建一个复杂的INSERT OR REPLACE查询可能是可能的,但这总是会删除旧行,而这通常不是您想要的。

无论如何,SQLite是一个嵌入式数据库,旨在与“真正的”编程语言一起使用。只需使用两个单独的语句:

db.execute('UPDATE Test SET Test1 = 5 WHERE ID = 42') 
if db.rowcount == 0: 
    db.execute('INSERT INTO Test(ID, Test1) VALUES (42, 5)')