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

Python向MySQL插入随机测试记录无报错,但查询返回空集

问题根因定位
  • mysql-connector-python驱动默认关闭自动提交(autocommit),所有通过游标执行的INSERT这类DML(数据操纵语言)操作,都会被纳入未提交的数据库事务上下文,修改不会直接持久化到表中。
  • 你的代码执行完全部插入逻辑后,没有主动调用事务提交接口;当程序运行结束、数据库连接被回收时,未提交的事务会被MySQL自动回滚,所有插入的修改全部作废。
  • 整个流程没有触发语法、权限、数据格式类的错误,程序和驱动都不会抛出异常,因此出现“全程无报错、查询返回空集”的现象。
  • 代码中的CREATE TABLE属于DDL(数据定义语言)语句,MySQL对DDL操作会执行隐式事务提交,因此products表可以正常创建,这也是为什么查询时不会报“表不存在”,只会返回空结果。
可行修复方案
  • 手动提交事务:在所有插入逻辑执行完成后,调用连接对象的提交方法:db_connection.commit(),确保所有插入的修改持久化到磁盘。
  • 开启自动提交:在初始化数据库连接时,给mysql.connector.connect()方法增加入参autocommit=True,后续所有DML操作执行后会自动完成提交,无需手动调用接口。
  • 资源释放:程序执行完毕后主动调用db_cursor.close()、db_connection.close()释放数据库资源,避免连接泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 17:54:04