Python 什么';这两种实现“复制增量”的方法有什么区别?
假设我有一个表Python 什么';这两种实现“复制增量”的方法有什么区别?,python,mysql,sql,database,Python,Mysql,Sql,Database,假设我有一个表user\u count定义如下: id primary key, auto increment user_id unique count default 0 我要做的是,当用户的现有记录存在时,按1递增count,或者插入新记录 目前,我是这样做的(在Python中): 也可以通过以下方式实现: cursor.execute("INSERT INTO user_count (user_id) VALUES (user_id
user\u count
定义如下:
id primary key, auto increment
user_id unique
count default 0
我要做的是,当用户的现有记录存在时,按1递增count
,或者插入新记录
目前,我是这样做的(在Python中):
也可以通过以下方式实现:
cursor.execute("INSERT INTO user_count (user_id) VALUES (user_id) ON DUPLICATE KEY UPDATE count = count + 1", user.id)
这两种方法有什么区别,哪种更好?第一种方法使用异常来引导程序的流程,除非您没有其他解决方案(例如,以独占方式访问文件),否则您不应该这样做。此外,它从数据库中获取工作,数据库应该更了解如何处理该案例 第二个代码处理数据库中的所有工作,这反过来可以非常有效地优化查询计划
我会使用第二种解决方案,因为数据库通常比您更了解如何处理案例。第二种解决方案是一个SQL命令,它利用数据库提供的功能精确解决您在这里遇到的问题 它会使用它,因为它应该更快更可靠
如果该功能不可用(较旧的数据库版本?),第一个是回退功能。+1-为异常保留异常。我完全支持让数据库做他们擅长的事情,而不是在应用程序代码中添加额外的条件
cursor.execute("INSERT INTO user_count (user_id) VALUES (user_id) ON DUPLICATE KEY UPDATE count = count + 1", user.id)