使用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(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |