Skip to main content
 首页 » 编程设计

python之如果值已经在表中,如何将值插入表或更新它

2025年05月04日20jillzhang

我正在建立一个包含两个字段的数据库,即 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 .