提问者:小点点

MySQLdb python插入行或列上的增量计数(如果存在)


我在MySQL中有一个简单的表,看起来像这样:

我想使用python实现的是:

  • 将用户名添加到表中(如果不存在),并将计数设置为1

在Python2.7中使用MySQLdb的最佳方法是什么

当然,我可以通过查询用户名来做到这一点,然后如果存在更新计数,但也许有更好的方法来做到这一点。

谢谢


共1个答案

匿名用户

这里是一种使用@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只是采取重复列和递增1。当您运行三个INSERT命令时,您将看到两个记录,stackoverflow.com重复值为1,而dba.stackexchange.com重复值为0。