df to table throw error TypeError: __init__() got multiple values for argument 'schema'

回答 3 浏览 2396 2023-01-30

我在pandas中有一个数据框架:purchase_df。我想把它转换为sql表,这样我就可以在pandas中执行sql查询。我试过这个方法

purchase_df.to_sql('purchase_df', con=engine, if_exists='replace', index=False)

它抛出了一个错误

TypeError: __init__() got multiple values for argument 'schema'

我有一个名为purchase_df的数据框架,我需要对它执行sql查询。我需要对这个数据框架执行sql查询,就像这样....engine.execute(''select * from purchase_df where condition'')。为此,我需要将数据框架转换成sql表,因为在我们的服务器上没有安装pandas_sql,只有sql alchemy被安装了。

我在本地的pycharm中运行了这段代码,它运行得非常好,但是当我在databrick notebook中尝试这个代码时,却显示了一个错误。尽管一周前它在databrick notebook中也运行良好。请帮助我解决这个问题。

注:- pandas版本'1.3.4'
名称:SQLAlchemy
版本:2.0.0

Arpan Ghimire 提问于2023-01-30
请公布完整的追踪信息Abdul Niyas P M 2023-01-30
@AbdulNiyasPM 我不明白,请详细说明一下。Arpan Ghimire 2023-01-30
@AbdulNiyasPM 我有一个名为purchase_df的数据框架,我需要对它执行sql查询。我需要对这个数据框架执行sql查询,就像这样....engine.execute('''select * from purchase_df where condition''')。为此,我需要将数据框架转换成sql表,因为在我们的服务器上没有安装pandas_sql,只安装了sql alchemy。当我在本地做的时候,它可以工作,但在databricks中却不行。Arpan Ghimire 2023-01-30
3 个回答
#1楼 已采纳
得票数 5

似乎SQLAlchemy的版本2.0.0(2023年1月26日发布)与的早期版本不兼容。 我建议你升级你的pandas版本到最新的(版本1.5.3),用.NET Framework 2.0升级到1.5.3。

pip install --upgrade pandas

或者说:

conda upgrade pandas
Timeless 提问于2023-01-30
使用!pip install --upgrade pandas解决了Azure Databricks环境中的问题。它警告说" Can't uninstall 'pandas'。没有发现可以卸载的文件。",但是当执行!pip freeze时,新的版本(1.5.3)被列出,并且" multiple values for argument 'schema' "错误消失了。Vinícius Queiroz 2023-01-31
很好!谢谢你的明确反馈,Vinicius。这真是太有帮助了;)Timeless 2023-01-31
#2楼
得票数 4

我在databricks中也遇到了同样的问题,我不得不将sql alchemy降级为!!! pip install sqlalchemy==1.4.46。

Gonzalo Rojas 提问于2023-01-30
Sunderam Dubey 修改于2023-01-31
#3楼
得票数 1

我在AWS的databricks上遇到了完全相同的问题。我尝试了上面的解决方案,但没有一个方案对我有效。所以我安装了sqlalchemy-databricks库,而不是SQLAlchemy,一切都恢复了正常。https://pypi.org/project/sqlalchemy-databricks/ 请先卸载/清除SQLAlchemy,以免与sqlalchemy-databricks发生冲突。

tlubenov 提问于2023-02-01
tlubenov 修改于2023-02-01
很好的发现--谢谢。令人讨厌的是,AWS ELB停留在Python 3.7上,否则更新numpy和pandas就可以解决这个问题了。Nick T 2023-02-06