pandas将数据框写入其他PostgreSQL模式
我正在尝试使用模式限定表将熊猫DataFrame写入PostgreSQL数据库。
我使用以下代码:
import pandas.io.sql as psql
from sqlalchemy import create_engine
engine = create_engine(r'postgresql://some:user@host/db')
c = engine.connect()
conn = c.connection
df = psql.read_sql("SELECT * FROM xxx", con=conn)
df.to_sql('a_schema.test', engine)
conn.close()
发生的情况是,大熊猫在名为“ a_schema.test”的表中以“公共”模式编写,而不是在“ a_schema”模式中的“ test”表中编写。
如何指示熊猫使用与公共模式不同的模式?
谢谢
-
更新:从熊猫0.15开始,支持写入不同的架构。然后,您将可以使用
schema
关键字参数:df.to_sql('test', engine, schema='a_schema')
read_sql
和to_sql
函数目前尚不支持写入其他模式(但是已经提交了增强请求:https
:
//github.com/pydata/pandas/issues/7441)。但是,您现在可以使用对象接口
PandasSQLAlchemy
并提供自定义MetaData
对象来解决这个问题:meta = sqlalchemy.MetaData(engine, schema='a_schema') meta.reflect() pdsql = pd.io.sql.PandasSQLAlchemy(engine, meta=meta) pdsql.to_sql(df, 'test')
谨防!这个介面(
PandasSQLAlchemy
)尚未真正公开,在下一版的Pandas中仍会发生变化,但这是您可以对Pandas 0.14进行的操作。更新 :在0.15中
PandasSQLAlchemy
重命名为SQLDatabase
。