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

使用mysql-connector-python执行MySQL INSERT语句无法保存数据问题

MySQL插入数据失败问题修复方案

存在的问题

  • 变量名与方法调用错误
    代码中定义的数据库连接对象变量名为connection,但获取游标时误用了未定义的cnx变量,且获取游标需调用.cursor()方法而非.connection()方法,若实际运行无报错可确认是编写示例时的笔误。
  • 未手动提交事务
    mysql-connector-python默认关闭自动提交配置,执行INSERT、UPDATE、DELETE这类DML语句后,必须调用连接对象的.commit()方法提交事务,数据才会持久化写入数据库,未提交的事务在连接关闭后会自动回滚,因此你看不到写入的数据。
  • 调用fetchall()不符合语法规则
    fetchall()用于读取SELECT查询返回的结果集,INSERT语句没有返回的查询结果,调用后自然返回空列表[],属于正常现象。
  • 主键值为2的原因
    MySQL自增主键的计数不会随事务回滚回退,你之前运行Python代码时虽然事务最终回滚,但INSERT语句执行时已经占用了一次自增ID(值为1),因此后续手动执行INSERT时,自增ID就从2开始计数。

修正后代码

import mysql.connector

# 建立数据库连接
connection = mysql.connector.connect(user="root", database="test_db")
# 获取游标
cursor = connection.cursor()

try:
    cursor.execute("INSERT INTO category (category_name) VALUES ('test')")
    # 提交事务
    connection.commit()
    # 可通过rowcount查看受影响行数
    print(f"插入成功,受影响行数:{cursor.rowcount}")
except Exception as e:
    # 异常时回滚事务
    connection.rollback()
    print(f"插入失败,错误信息:{e}")
finally:
    # 释放资源
    cursor.close()
    connection.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:42:02