我正在使用sqlite3和python。我的表存储日期时间和温度。 我想通过更新具有相同日期时间的行来更新新数据行,并在没有具有特定日期时间的行时插入新行。
因此,例如,如果日期时间等于'2014年3月12日'的行存在,我的代码应更新它或创建新记录。但不幸的是,以下代码总是创建一条新记录:
c.execute("INSERT or REPLACE INTO weather (datetime, temp) VALUES ('12 Mar 2014', 20)")
任何想法都赞赏! 附:我之前也知道有类似的问题,但我恐怕无法理解如何将答案应用于我自己的问题(作为一个菜鸟当然没有帮助!)
答案 0 :(得分:3)
要使INSERT OR REPLACE
正常工作,您需要对表格进行一些约束,例如
datetime TEXT UNIQUE
只有当插入会产生约束违规时,首先删除冲突的行,然后插入新行。没有约束,就没有要替换的行。
答案 1 :(得分:1)
替换语句仅适用于主键或唯一约束,您可以看到here
因此,请将datetime设置为Unique或Primary Key(最好是唯一的),以便替换语句可以正常工作。