排查 MySQL 和 Python 数据库更新问题
当尝试使用 Python 更新 MySQL 数据库中的数据时,开发人员可能会遇到更改的情况通过Python代码直接查询时不会反映在数据库中。本文研究了这个问题并提供了一个可能的解决方案。
问题描述
根据用户描述,使用 MySQLdb 更新数据库行的程序无法保存持续改变。该代码执行更新查询,但通过命令行界面 (CLI) 检查数据库时,未观察到更新。
import MySQLdb conn = MySQLdb.connect(host="localhost", user="root", passwd="pass", db="dbname") cursor = conn.cursor() cursor.execute("UPDATE compinfo SET Co_num=4 WHERE ID=100") cursor.execute("SELECT Co_num FROM compinfo WHERE ID=100") results = cursor.fetchall() for row in results: print row[0] print "Number of rows updated: %d" % cursor.rowcount cursor.close() conn.close()
解决方案
问题源于 MySQLdb 中的默认事务处理。默认情况下,MySQLdb 禁用自动提交,这意味着对数据库所做的更改不会持久,直到显式执行提交操作。要解决此问题,代码应在关闭连接之前调用 conn.commit():
import MySQLdb conn = MySQLdb.connect(host="localhost", user="root", passwd="pass", db="dbname") cursor = conn.cursor() cursor.execute("UPDATE compinfo SET Co_num=4 WHERE ID=100") # Commit the changes to the database conn.commit() cursor.execute("SELECT Co_num FROM compinfo WHERE ID=100") results = cursor.fetchall() for row in results: print row[0] print "Number of rows updated: %d" % cursor.rowcount cursor.close() conn.close()
使用 conn.commit(),将更改提交到数据库,确保后续查询反映更新后的值。
以上是为什么我的 Python MySQL 更新没有反映在数据库中?的详细内容。更多信息请关注PHP中文网其他相关文章!