我正在将一个pandas Dataframe写入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仍然无法正常工作。
答案 0 :(得分:2)
我想你使用的是pandas 0.15。 PandasSQLAlchemy
尚未真正公开,并在大熊猫0.15至SQLDatabase
中重命名。因此,如果您在代码中替换它,它应该可以工作(所以pdsql = pd.io.sql.SQLDatabase(engine, meta=meta)
)。
但是,从pandas 0.15开始,read_sql_table
和to_sql
函数中也有架构支持,因此不需要制作MetaData
和SQLDatabase
手动对象。相反,这应该这样做:
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
答案 1 :(得分:0)
我最近遇到此错误,并且解决了我删除与.py文件位于同一目录中的.pyc文件的问题。这些文件(.pyc)保存了先前的版本信息以及时间,日期。