You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本更新MySQL表后修改不持久,请求技术协助

解决mysql-connector修改数据重启脚本后丢失的问题

嘿,这个问题我碰到过好多次——核心原因几乎都是事务没提交!

mysql-connector 默认是关闭自动提交(autocommit)的,这意味着你执行的 INSERT/UPDATE/DELETE 操作只会在当前数据库连接的事务中临时生效。一旦脚本运行结束,连接断开,未提交的事务会被自动回滚,所以下次运行脚本自然看不到之前的修改。

给你两个靠谱的解决方案:

方案1:手动提交事务

在执行完所有修改操作后,显式调用连接对象的 commit() 方法,把事务持久化到数据库:

import mysql.connector

# 建立数据库连接
conn = mysql.connector.connect(
    host="你的主机地址",
    user="你的用户名",
    password="你的密码",
    database="目标数据库名"
)

cursor = conn.cursor()

# 执行修改操作(比如更新数据)
update_sql = "UPDATE your_table SET status = 'active' WHERE id = 100"
cursor.execute(update_sql)

# 关键步骤:提交事务!
conn.commit()

# 别忘了关闭资源
cursor.close()
conn.close()

方案2:开启自动提交

如果你的场景不需要事务的原子性(比如每个操作都是独立的),可以在建立连接时直接开启自动提交,这样每次执行修改操作后都会自动持久化:

import mysql.connector

# 建立连接时开启autocommit
conn = mysql.connector.connect(
    host="你的主机地址",
    user="你的用户名",
    password="你的密码",
    database="目标数据库名",
    autocommit=True  # 开启自动提交
)

cursor = conn.cursor()

# 执行修改操作,无需手动commit
insert_sql = "INSERT INTO your_table (name, age) VALUES ('Alice', 25)"
cursor.execute(insert_sql)

# 关闭资源
cursor.close()
conn.close()

额外提醒

  • 确保你的表使用的是支持事务的引擎(比如 InnoDB,这是MySQL现在的默认引擎),如果是老旧的 MyISAM 引擎,事务功能是不生效的,但现在几乎没人用MyISAM了。
  • 如果你需要批量执行多个修改操作,手动提交更安全——可以确保所有操作要么全部成功,要么全部回滚,避免数据不一致。

内容的提问来源于stack exchange,提问作者ca11of lucky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:57:40