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

Python插入MySQL数据不显示求助:代码执行后数据未入库

问题原因及解决方案

核心问题:未提交事务

MySQL Connector/Python 默认关闭自动提交(autocommit=False),执行INSERT语句后,必须手动调用connection.commit()才能将数据持久化到数据库,否则操作仅在当前会话临时生效,断开连接后数据会自动回滚。

修复后的完整代码

import mysql.connector

connection = mysql.connector.connect(host='localhost',
                                     database='CLOTHdb',
                                     user='root',
                                     password='')

# 建议明确指定列名,避免表结构变动导致出错
sql_insert_Query = "INSERT INTO PRODUCT_MASTER (prod_code, pname, price, pcolor, pdesc) VALUES (%s,%s,%s,%s,%s)"

prod_code = int(input("Enter Product Code: "))
pname = input("Enter Product Name: ")
price = float(input("Enter Product Price: "))
pcolor = input("Enter Product Color: ")
pdesc = input("Enter Product Description: ")

param = (prod_code, pname, price, pcolor, pdesc)
cursor = connection.cursor()
try:
    cursor.execute(sql_insert_Query, param)
    # 关键步骤:提交事务
    connection.commit()
    print(f"数据插入成功,共影响 {cursor.rowcount} 行")
    
    # 执行查询验证插入结果
    cursor.execute("SELECT * FROM PRODUCT_MASTER WHERE prod_code = %s", (prod_code,))
    records = cursor.fetchall()
    
    print("\n已插入的产品信息:")
    for row in records:
        print("prod_code = ", row[0])
        print("pname = ", row[1])
        print("price  = ", row[2])
        print("pcolor  = ", row[3])
        print("pdesc = ", row[4], "\n")
except Exception as e:
    # 出错时回滚事务,避免脏数据
    connection.rollback()
    print(f"插入失败:{str(e)}")
finally:
    # 释放数据库资源
    cursor.close()
    connection.close()

其他注意事项

  • 原代码中cursor.fetchall()直接在INSERT后调用无效,因为INSERT语句不会返回结果集,需执行SELECT查询才能获取刚插入的数据。
  • 添加异常处理和资源释放逻辑,可避免数据库连接泄漏,同时在出错时回滚事务保证数据一致性。
  • 明确指定INSERT语句的列名,能提升代码健壮性,防止表结构调整后出现字段不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:47:48