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函数外部,永远不会被执行,连接无法正常释放
修复步骤
- 修改建表语句,替换固定表名为传入参数:
# 原代码 command = """CREATE TABLE """+"""CLASSTABLE(""" # 替换为 command = f"CREATE TABLE `{table_name}` ("
- 修复插入语句的空格问题:
# 原代码 command = 'INSERT INTO `' + table_name + '`' + 'VALUES' # 替换为 command = f"INSERT INTO `{table_name}` VALUES "
- 插入操作执行完成后添加事务提交:
for i in row_command(): cursor2.execute(i) # 新增提交语句 conn1.commit()
调整
conn1.close()的缩进,放到if add_rows:代码块内部,和conn1 = my.connect(...)同级。拼接字段值时根据你之前输入的字段类型判断是否需要加单引号,字符串/日期类型的值需要用单引号包裹。
内容的提问来源于stack exchange,提问作者new_to_code
相关产品推荐
相关产品推荐

