self.engine=create_engine("postgresql://postgres:12345@localhost/postgres")
self.con = self.engine.connect()
self.conn.autocommit = True
self.cursor = self.conn.cursor()
df.to_sql(symbol, schema='xxx', con=self.con, if_exists='append',
index=False)
df.to_sql(symbol, con=self.con, if_exists='append',
index=False)
在将数据帧添加到 postgre sql 数据库时,我在这两种情况下都遇到此错误
meta = MetaData(self.connectable, schema=schema)
TypeError:init()获得了参数“schema”的多个值
问题就在我的软件包更新时开始。它正在处理这些固定版本。
熊猫==1.1.5 SQLAlchemy==1.4.45
我刚刚在 Pandas 1.1.3 + SQLAlchemy 2.0.0 上遇到了这个问题。更新到1.5.3就没有了。
正如其他评论和答案中所述,这表明 pandas 和 SQLAlchemy 版本之间不匹配。
这通常发生在一个软件从另一个软件调用需要特定版本的特定函数时,否则这些函数将不存在,因此会抛出异常。
还有另一个讨论描述了同样的问题
df 到表抛出错误 TypeError: __init__() 获得参数“schema”的多个值
看来2.0.0版本(2023年1月26日发布) SQLAlchemy 与早期版本的 pandas 不兼容。
请始终考虑将您的软件版本包含在原始问题中,而不仅仅是在注释中,这将有助于更快地理解问题。
我在 Databricks 上遇到了这个问题,其中 pandas==1.5.3 和 SQLAlchemy==2.0.34。上面没有任何帮助,并且出于某种原因,在我在requirements.txt中包含typing_extensions==4.12.2之后,一切都开始正常工作。