将DataFrame写入SQL时出现TypeError: unhashable type: 'DataFrame'错误求助
问题原因及解决方法
核心问题
从报错回溯能明确看到,你调用update_table(engine, projects_info, projects_info)时,把DataFrame对象当成了表名字符串传给了update_table函数。to_sql方法的第一个参数要求是字符串类型的表名,传入不可哈希的DataFrame后,SQLAlchemy在检查元数据时就会抛出TypeError: unhashable type: 'DataFrame'。
解决步骤
- 修正
update_table的调用参数
找到代码中调用update_table的行(报错回溯里的第92行),把第二个参数换成表名字符串'projects',正确调用如下:update_table(engine, 'projects', projects_info) - 确认
update_table函数的参数定义
检查update_table函数的定义,确保参数顺序为(数据库引擎、表名字符串、要写入的DataFrame),示例定义如下:def update_table(engine, table_name, newdata): newdata.to_sql(table_name, engine, if_exists='replace', index=False) - 直接验证(可选)
可以先跳过update_table函数,直接执行以下代码测试写入是否正常:
如果这行代码能成功运行,说明问题确实出在projects_info.to_sql('projects', con=engine, if_exists='replace', index=False)update_table的参数传递上。
关键提醒
pandas.DataFrame.to_sql()的第一个参数必须是字符串类型的目标表名,绝对不能传入DataFrame对象,否则就会触发当前的不可哈希类型错误。
内容的提问来源于stack exchange,提问作者novawaly
相关产品推荐
相关产品推荐

