python - 这两种实现 `on duplication increment` 的方法有什么区别?

标签 python mysql sql database

假设我有一个表 user_count 定义如下:

   id          primary key, auto increment
   user_id     unique
   count       default 0

我想要做的是当用户的现有记录存在时将 count 加一,否则插入新记录。

目前,我这样做(用Python):

   try:
      cursor.execute("INSERT INTO user_count (user_id) VALUES (%s)", user.id)
   except IntegrityError:
      cursor.execute("UPDATE user_count SET count = count+1 WHERE user_id = %s", user.id)

也可以这样实现:

cursor.execute("INSERT INTO user_count (user_id) VALUES (user_id) ON DUPLICATE KEY UPDATE count = count + 1", user.id)

这两种方式有什么区别,哪一种更好?

最佳答案

第二个是单个 SQL 命令,它利用数据库提供的功能来准确解决您在这里遇到的问题。

它会使用它,因为它应该更快、更可靠。

如果该功能不可用(较旧的数据库版本?),第一个是后备。

关于python - 这两种实现 `on duplication increment` 的方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5385718/

相关文章:

python - 全局图例和标题旁的次要情节

python - Pygame 大表面

mysql - 如何创建更新触发器以增加/减少 1 个数字到总票数

php - mongodb 在使用 php 时出错

python - 如何将字符串列表评估为 Python 中的元组列表?

python - 如何自定义 Sphinx 的代码块语言?

mysql - 使用 phpMyAdmin 时出现 SQL #1064

php - 结果显示失败

sql - 使用 SQL 批量更新记录

使用 IN 而非 INNER JOIN 的 Sql 查询优化