我在 MySQL 中有一个简单的表,如下所示:
> 身份证 | 用户名 | 数数
我想用python实现的是:
- 将用户名添加到表中,如果不存在,则将计数设置为 1。
- 只要用户名存在,就将 count 加 1。
在 python 2.7 中使用 MySQLdb 的最佳方法是什么
当然我可以通过查询用户名来做到这一点,然后如果存在更新计数,但也许有更好的方法来做到这一点。
谢谢 !
我在 MySQL 中有一个简单的表,如下所示:
我想用python实现的是:
在 python 2.7 中使用 MySQLdb 的最佳方法是什么
当然我可以通过查询用户名来做到这一点,然后如果存在更新计数,但也许有更好的方法来做到这一点。
谢谢 !
这是一种使用@johnthexii 提供的链接的方法(demo)(它只使用 MySQL,所以它不是 Python 特定的)
CREATE TABLE UserNames (`username` varchar(35) unique, `duplicates` int);
INSERT INTO UserNames (`username`, `duplicates`)
VALUES ('stackoverflow.com', 0);
INSERT INTO UserNames (`username`, `duplicates`)
VALUES ('dba.stackexchange.com/', 0)
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1;
INSERT INTO UserNames (`username`, `duplicates`)
VALUES ('stackoverflow.com', 0)
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1;
以下是正在发生的事情的细分: 该username
字段被标记为唯一,因此任何使用现有用户名插入记录的尝试都将在数据库级别失败。然后INSERT
语句有一个额外的
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1
这告诉 MySQL 而不是失败的 INSERT 只取duplicates
列并增加一。当您运行三个 INSERT 命令时,您将看到两条记录,stackoverflow.com
值为duplicates
1,而dba.stackexchange.com
值为duplicates
0。