2017-06-10 58 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)')