我正在建立一个包含两个字段的数据库,即 user_id 和计数,如果表中已存在具有相同 user_id 的记录,我希望能够插入这对值或将计数递增 1。
我已经尝试过很多解决方案,例如 INSERT INTO ... ON DUPLICATE KEY UPDATE ...,但它们对我不起作用。它抛出一个错误:
sqlite3.OperationalError: near "ON": syntax error
我在 python 3.7 上运行 SQLite 3.21.0。
这是我的代码:
def add_warning(id):
sql = f"""INSERT INTO warnings (user_id, count) VALUES({id}, 1) ON CONFLICT(user_id) DO UPDATE SET count=count+1"""
cursor.execute(sql)
我希望在执行查询时更新计数值,但当我尝试这样做时会抛出错误。
最佳答案
假设user_id
是您可以使用的表的主键
(INSERT OR) REPLACE
:
sql = "REPLACE INTO warnings (user_id, count) VALUES(?, COALESCE((SELECT count + 1 FROM warnings WHERE user_id = ?), 1))"
cursor.execute(sql1, (id, id,))
参见 demo .
关于python - 如果值已经在表中,如何将值插入表或更新它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58471256/