加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 11:15:04 所属栏目:Python 来源:网络整理
导读:我正在尝试使用 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 =
我正在尝试使用 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)

用户是一本包含以下内容的字典:

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

我认为该问题可能与用户名有关,因为如果删除它,则更新有效.但当然我需要用它……

任何指针/建议将受到高度赞赏.

非常感谢,

Unai Rodriguez

————————–更新———————– –

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

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,year))
        cursor.execute("INSERT INTO " + dbtable + " (id,year,bytes,quota_in_mb) VALUES (NULL,%s,%s)",
                                            (username,info[0],info[1]))

我仍然有兴趣知道UPDATE(第一次实现)有什么问题.我现在就会这样离开剧本.非常感谢.

解决方法

您是否在更新后尝试COMMIT命令如下?

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

cursor.connection.commit();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读