在sqlite3 WHERE column =中INSERT或REPLACE

时间:2014-04-01 05:49:31

标签: python sql datetime sqlite

我正在使用sqlite3和python。我的表存储日期时间和温度。 我想通过更新具有相同日期时间的行来更新新数据行,并在没有具有特定日期时间的行时插入新行。

因此,例如,如果日期时间等于'2014年3月12日'的行存在,我的代码应更新它或创建新记录。但不幸的是,以下代码总是创建一条新记录:

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

任何想法都赞赏! 附:我之前也知道有类似的问题,但我恐怕无法理解如何将答案应用于我自己的问题(作为一个菜鸟当然没有帮助!)

2 个答案:

答案 0 :(得分:3)

要使INSERT OR REPLACE正常工作,您需要对表格进行一些约束,例如

datetime TEXT UNIQUE

只有当插入会产生约束违规时,首先删除冲突的行,然后插入新行。没有约束,就没有要替换的行。

答案 1 :(得分:1)

替换语句仅适用于主键或唯一约束,您可以看到here

因此,请将datetime设置为Unique或Primary Key(最好是唯一的),以便替换语句可以正常工作。