首页 >数据库 >mysql教程 >为什么我的 Python MySQL 更新没有反映在数据库中?

为什么我的 Python MySQL 更新没有反映在数据库中?

Susan Sarandon
Susan Sarandon原创
2024-12-06 04:32:10190浏览

Why Aren't My Python MySQL Updates Reflecting in the Database?

排查 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn