gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 03:04:55 25 4
gpt4 key购买 nike

我在 MySQL 中有一个简单的表,如下所示:

> 编号 |用户名 |计数

我想用python实现的是:

  • 将用户名添加到表中,如果不存在,则将计数设置为 1。
  • 每当用户名存在时,计数加 1。

在 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 列并递增 1。当您运行三个 INSERT 命令时,您将看到两条记录,stackoverflow.comduplicates 值为 1,而 dba.stackexchange.com duplicates 值为 0。

关于python - MySQLdb python 在列上插入行或增加计数(如果存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17286844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com