gpt4 book ai didi

python - 使用 Python 的 MySQLdb 更新 MySQL 表的问题

转载 作者:可可西里 更新时间:2023-11-01 07:54:59 24 4
gpt4 key购买 nike

我正在尝试使用 Python 的 MySQLdb 模块更新 MySQL 表。尽管查询看起来相当简单,但它不会更新信息。这是我的代码:

for username,info in users.iteritems():
if info[0] > 0 and info[1] > 0:
month = 8
year = 2010
cursor.execute("""
UPDATE users_disk
SET
bytes = %s,
quota_in_mb = %s
WHERE
username = %s AND
month = %s AND
year = %s
""", (info[0], info[1], username, month, year))
print "Username: %s; Rowcount: %d" % (username, cursor.rowcount)

输出看起来像这样:

Username: niu666; Rowcount: 0
Username: antuan; Rowcount: 0
Username: tuyo; Rowcount: 0
Username: angela; Rowcount: 0
Username: felipe; Rowcount: 0
Username: Meni; Rowcount: 0
Username: tronco; Rowcount: 0
Username: queque; Rowcount: 0
Username: cerel; Rowcount: 0

这意味着没有任何行被更新!该表具有以下内容:

mysql> select * from users_disk;
+----+----------+-------+------+---------+-------------+
| id | username | month | year | bytes | quota_in_mb |
+----+----------+-------+------+---------+-------------+
| 1 | niu666 | 8 | 2010 | 28672 | 1024000 |
| 2 | antuan | 8 | 2010 | 77824 | 4608000 |
| 3 | tuyo | 8 | 2010 | 28672 | 1024000 |
| 4 | angela | 8 | 2010 | 45056 | 2048000 |
| 5 | felipe | 8 | 2010 | 53248 | 307200 |
| 6 | Meni | 8 | 2010 | 86016 | 4096000 |
| 7 | tronco | 8 | 2010 | 3067904 | 1024000 |
| 8 | queque | 8 | 2010 | 61440 | 4608000 |
| 9 | cerel | 8 | 2010 | 110592 | 5632000 |
+----+----------+-------+------+---------+-------------+
9 rows in set (0.00 sec)

users是一个字典,内容如下:

{'niu666': (28672, 1024000), 'tutk': (-1, -1), 'antuan': (77824, 4608000), 'tolin': (-1, -1), 'tuyo': (28672, 1024000), 'angela': (45056, 2048000), 'felipe': (53248, 307200), 'Meni': (86016, 4096000), 'tronco': (3067904, 1024000), 'queque': (61440, 4608000), 'cerel': (110592, 5632000), 'carok': (-1, -1), 'niu': (-1, -1)}

我认为这个问题可能与用户名有关,因为如果我删除它,更新就会生效。但是我当然需要使用它...

我们将不胜感激任何指点/建议。

非常感谢,

乌奈·罗德里格斯

------------------------更新-------------------- -----

伙计们,我正在使用以下“丑陋”的解决方法……有效:

for username,info in users.iteritems():
if info[0] > 0 and info[1] > 0:
# The user has positive values, its valid!
cursor.execute("DELETE FROM " + dbtable + " WHERE username = %s AND month = %s AND year = %s", \
(username, month, year))
cursor.execute("INSERT INTO " + dbtable + " (id, username, month, year, bytes, quota_in_mb) VALUES (NULL, %s, %s, %s, %s, %s)", \
(username, month, year, info[0], info[1]))

我仍然很想知道 UPDATE(第一次实现)出了什么问题。我暂时保留这样的脚本。非常感谢。

最佳答案

您是否在更新后尝试使用 COMMIT 命令,如下所示?

cursor.execute("UPDATE animals SET species=%s WHERE name=%s",('TEST', 'Rollo'))

cursor.connection.commit();

关于python - 使用 Python 的 MySQLdb 更新 MySQL 表的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3573069/

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