gpt4 book ai didi

python - Pandas 将数据框写入其他 postgresql 模式

转载 作者:太空狗 更新时间:2023-10-29 17:04:44 25 4
gpt4 key购买 nike

我正在尝试将 pandas 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()

发生的事情是 pandas 在名为“a_schema.test”的表中以“public”模式写入,而不是在“a_schema”架构中的“测试”表中写入。

我如何指示 pandas 使用不同于 public 的模式?

谢谢

最佳答案

更新:从 pandas 0.15 开始,支持写入不同的模式。然后您将能够使用 schema 关键字参数:

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

read_sqlto_sql 函数目前尚不支持写入不同的模式(但已提交增强请求:https://github.com/pydata/pandas/issues/7441)。

但是,您现在可以使用带有 PandasSQLAlchemy 的对象接口(interface)并提供自定义 MetaData 对象:

meta = sqlalchemy.MetaData(engine, schema='a_schema')
meta.reflect()
pdsql = pd.io.sql.PandasSQLAlchemy(engine, meta=meta)
pdsql.to_sql(df, 'test')

当心!此接口(interface) (PandasSQLAlchemy) 尚未真正公开,在下一版本的 pandas 中仍会发生变化,但这是 pandas 0.14 的实现方式。

更新:PandasSQLAlchemy 在 pandas 0.15 中重命名为 SQLDatabase

关于python - Pandas 将数据框写入其他 postgresql 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24189150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com