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

Python调用MySQL的execute函数无法执行插入行操作如何解决

问题原因与修复方案

核心问题1:未提交事务

你使用的MySQL连接驱动默认开启事务,所有INSERT操作执行后必须调用连接对象的commit()方法才能将修改真正持久化到数据库。你当前代码执行完插入操作后直接关闭连接,未提交的变更会自动回滚,所以不会有数据写入,也不会触发报错。

核心问题2:建表语句表名写死

你代码中的建表语句固定写死了表名为CLASSTABLE,和你传入的table_name参数无关,后续插入语句使用传入的table_name操作的是不存在的表,自然无法插入数据。

其他语法/逻辑问题

  • 插入语句拼接缺少空格:INSERT INTO 表名VALUES 语法错误,表名和VALUES之间需要加空格
  • 字符串类型字段值未加单引号:直接拼接字符串值会导致SQL语法错误,比如VALUES(张三,20)是非法的,需要写成VALUES('张三',20)
  • conn1.close()缩进错误:当前写在了add_to_mysql函数外部,永远不会被执行,连接无法正常释放

修复步骤

  1. 修改建表语句,替换固定表名为传入参数:
# 原代码
command = """CREATE TABLE """+"""CLASSTABLE("""
# 替换为
command = f"CREATE TABLE `{table_name}` ("
  1. 修复插入语句的空格问题:
# 原代码
command = 'INSERT INTO  `' + table_name + '`' + 'VALUES'
# 替换为
command = f"INSERT INTO `{table_name}` VALUES "
  1. 插入操作执行完成后添加事务提交:
for i in row_command():
    cursor2.execute(i)
# 新增提交语句
conn1.commit()
  1. 调整conn1.close()的缩进,放到if add_rows:代码块内部,和conn1 = my.connect(...)同级。

  2. 拼接字段值时根据你之前输入的字段类型判断是否需要加单引号,字符串/日期类型的值需要用单引号包裹。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:54:03