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

使用pandas to_sql无法更新MySQL表问题求助

解决方法
  • 先确认DataFrame是否有数据
    执行print(sql_d.shape)和print(sql_d.head()),检查从Makes表查询出来的sql_d是否包含有效数据。如果查询结果为空,插入自然不会有数据。

  • 删除手动创建表的代码
    你使用了if_exists='replace'参数,该参数会自动删除已存在的Brand表,再根据DataFrame的结构重建新表。之前手动创建表的操作完全多余,还可能引发表结构不匹配的问题。直接删除以下两行代码:

    mycursor = mydb.cursor()
    mycursor.execute('create table Brand (id int auto_increment primary Key, MakeId int(10), brand varchar(100))')
    
  • 确保数据库连接正确
    核对create_engine中的user:password@host/database参数,确认用户名、密码、主机地址、数据库名称均正确。避免因连接到错误数据库,导致数据插入后无法在目标库中看到。

  • 使用事务上下文确保提交
    改用engine.begin()上下文管理器执行插入,它会自动处理事务提交,避免因事务未提交导致数据未写入磁盘:

    from sqlalchemy import create_engine
    
    engine = create_engine('mysql+pymysql://user:password@host/database')
    with engine.begin() as conn:
        sql_d.to_sql(name='Brand', con=conn, if_exists='replace', index=False)
    
  • 检查字段名大小写匹配
    MySQL在Linux系统下区分字段名大小写,确认查询时使用的字段名与DataFrame列名一致。比如你查询得到的列是MakeID,若手动查询时写成MakeId,可能会找不到数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:59:59