pandas将数据框写入其他PostgreSQL模式

发布于 2021-01-29 17:20:00

我正在尝试使用模式限定表将熊猫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
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    更新:从熊猫0.15开始,支持写入不同的架构。然后,您将可以使用schema关键字参数:

    df.to_sql('test', engine, schema='a_schema')
    

    read_sqlto_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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看