2014-04-01 26 views
2

我正在使用python sqlite3。我的表格存儲日期時間和溫度。 我想在新數據進來時通過更新具有相同日期時間的行來更新行,並且在沒有具有特定日期時間的行存在時插入新行。插入或更換在sqlite3 WHERE列=

因此,例如,如果日期時間等於2014年3月12日的行存在,我的代碼應該更新它或創建一個新記錄。但不幸的是,下面的代碼總是創建新記錄:

c.execute("INSERT or REPLACE INTO weather (datetime, temp) VALUES ('12 Mar 2014', 20)") 

任何想法讚賞! P.S.我知道以前有類似的問題,但恐怕我無法理解如何將答案應用於我自己的問題(作爲一名新秀肯定沒有幫助!)

回答

2

要讓INSERT OR REPLACE工作,您需要一些約束在桌子上,例如

datetime TEXT UNIQUE 

只有當插入會產生違反約束時,衝突的行先被刪除,然後插入新的行。沒有限制,沒有行要被替換。

+0

非常感謝您的支持! – andgeo

2

REPLACE語句只能在主鍵或唯一約束,則可以看到here

所以要日期時間作爲唯一或主鍵(唯一最好),讓您的REPLACE語句可以工作。

+0

感謝您花時間在此! – andgeo