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

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

Susan Sarandon
Susan Sarandon原创
2024-12-06 19:38:14570浏览

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

使用 MySQL 和 Python 排除数据库更新问题

使用 Python 的 MySQLdb 库更新 MySQL 数据库时会出现问题。正在执行以下代码:

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()

运行此代码后,显示成功,表明数据库已更新。然而,随后从 MySQL 命令行界面查询发现更新并未应用。

原因

问题在于缺少提交操作。 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")
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

**conn.commit()**  # Commit changes to database

cursor.close()
conn.close()

通过合并 conn.commit(),对数据库所做的更改将成功持久。

以上是为什么使用 Python 更新我的 MySQL 数据库没有反映在数据库中?的详细内容。更多信息请关注PHP中文网其他相关文章!

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