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

将DataFrame写入SQL时出现TypeError: unhashable type: 'DataFrame'错误求助

问题原因及解决方法

核心问题

从报错回溯能明确看到,你调用update_table(engine, projects_info, projects_info)时,把DataFrame对象当成了表名字符串传给了update_table函数。to_sql方法的第一个参数要求是字符串类型的表名,传入不可哈希的DataFrame后,SQLAlchemy在检查元数据时就会抛出TypeError: unhashable type: 'DataFrame'。

解决步骤

  1. 修正update_table的调用参数
    找到代码中调用update_table的行(报错回溯里的第92行),把第二个参数换成表名字符串'projects',正确调用如下:
    update_table(engine, 'projects', projects_info)
    
  2. 确认update_table函数的参数定义
    检查update_table函数的定义,确保参数顺序为(数据库引擎、表名字符串、要写入的DataFrame),示例定义如下:
    def update_table(engine, table_name, newdata):
        newdata.to_sql(table_name, engine, if_exists='replace', index=False)
    
  3. 直接验证(可选)
    可以先跳过update_table函数,直接执行以下代码测试写入是否正常:
    projects_info.to_sql('projects', con=engine, if_exists='replace', index=False)
    
    如果这行代码能成功运行,说明问题确实出在update_table的参数传递上。

关键提醒

pandas.DataFrame.to_sql()的第一个参数必须是字符串类型的目标表名,绝对不能传入DataFrame对象,否则就会触发当前的不可哈希类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:25:20