【问题标题】:SQLAlchemy AttributeError: 'module' object has no attribute 'PandasSQLAlchemy'SQLAlchemy AttributeError:“模块”对象没有属性“PandasSQLAlchemy”
【发布时间】:2020-04-15 23:28:46
【问题描述】:

我正在将 pandas 数据框写入 Postgres 数据库:

from sqlalchemy import create_engine, MetaData
engine = create_engine(r'postgresql://user:password@localhost:5432/db')
meta = MetaData(engine, schema='data_quality')
meta.reflect(engine, schema='data_quality')
pdsql = pd.io.sql.PandasSQLAlchemy(engine, meta=meta)
pdsql.to_sql(dataframe, table_name)

它运行良好,但现在 SQLAlchemy 在第 5 行抛出以下错误:

AttributeError: 'module' object has no attribute 'PandasSQLAlchemy'

我不确定它是否相关,但 Pandas 也同时崩溃了 - 就像在这个 google-api-python-client 问题中一样:

Could not Import Pandas: TypeError

我昨天安装了 google-api-python-client 并卸载它解决了 Pandas 的问题,但 SQLAlchemy 仍然无法工作。

【问题讨论】:

    标签: python pandas sqlalchemy


    【解决方案1】:

    我想您使用的是 pandas 0.15。 PandasSQLAlchemy 尚未真正公开,并在 pandas 0.15 中重命名为 SQLDatabase。所以如果你在你的代码中替换它,它应该可以工作(所以pdsql = pd.io.sql.SQLDatabase(engine, meta=meta))。

    但是,从 pandas 0.15 开始,read_sql_tableto_sql 函数也支持模式,因此不需要手动创建 MetaDataSQLDatabase 对象。相反,应该这样做:

    dataframe.to_sql(table_name, engine, schema='data_quality')
    

    查看 0.15 版本说明:http://pandas.pydata.org/pandas-docs/stable/whatsnew.html#improvements-in-the-sql-io-module

    【讨论】:

    • (之前修复pandas导入错误时,没有意识到我更新到了Pandas 0.15)
    【解决方案2】:

    我最近遇到了这个错误,它解决了我删除与 .py 文件位于同一目录中的 .pyc 文件。这些文件 (.pyc) 保存以前的版本信息和时间、日期。

    【讨论】:

      猜你喜欢
      • 2021-09-09
      • 2010-11-18
      相关资源
      最近更新 更多