python - 在 sqlite3 WHERE 列 = 中插入或替换

标签 python sql datetime sqlite

我正在使用带有 python 的 sqlite3。我的表存储日期时间和温度。 我想在新数据进入时更新行,方法是更新具有相同日期时间的行,并在不存在具有特定日期时间的行时插入新行。

因此,例如,如果存在日期时间等于“2014 年 3 月 12 日”的行,我的代码应该更新它或创建一个新记录。但不幸的是,无论如何,下面的代码总是会创建一个新记录:

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

任何想法表示赞赏! 附言我知道以前有人问过类似的问题,但恐怕我无法理解如何将那里的答案应用到我自己的问题上(作为一个菜鸟当然没有帮助!)

最佳答案

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

datetime TEXT UNIQUE

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

关于python - 在 sqlite3 WHERE 列 = 中插入或替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22777793/

相关文章:

c# - 在 C# 中查找给定日期的最接近月末

python - 如何动态更改 pytest 的 tmpdir 基本目录

sql - 查找所有包含列名的表;过滤空

python - 属性错误 : 'NoneType' object has no attribute 'dpi_scale_trans'

c# - 三个类的多对多关系

mysql - 未订购的客户

python - 在时间戳之间创建一系列天 - 上面的重复链接无法解决

python - 如果条件为真,则传递关键字参数

python - 谷歌应用引擎持久全局变量

python - 获取字典名称