当前位置: 首页 > 面试题库 >

熊猫将数据框写入其他PostgreSQL模式

穆商震
2023-03-14
问题内容

我正在尝试使用模式限定表将熊猫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”表中进行写入。

如何指示熊猫使用与公共模式不同的模式?

谢谢


问题答案:

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

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

read_sqlto_sql函数目前尚不支持写入其他模式(但是已经提交了增强请求:https
:
//html" target="_blank">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



 类似资料:
  • 问题内容: 我正在编写一个脚本,以将带有标头的大.xlsx文件减少到一个csv中,然后根据标头名称仅写有所需列的新csv文件。 我得到的错误是最后一部分代码,它说 我确定我忽略了一些愚蠢的事情,但是我已经阅读了熊猫网站上的to_csv文档,但我仍然感到茫然。我知道我使用了不正确的to_csv参数,但我似乎无法理解我猜的文档。 任何帮助表示赞赏,谢谢! 问题答案: 选择特定列的方法是这样的-

  • 问题内容: 我有两个看起来像这样的数据框: 现在,如果我利用pandas .isin函数,我可以做一些漂亮的事情 列和from存在于while中不 我的问题是:是否有人知道为df_2中但不存在于df_1中的列返回列标签的方法 像这样的东西 先感谢您! 问题答案: 熊猫索引对象具有类似集合的属性,因此您可以直接执行以下操作: 您还可以使用运算符来计算交集,并集和对称差: 过去存在差异的运算符,现已弃

  • 问题内容: 用以下格式将a写入Excel工作簿很简单: 这使: 和相应的Excel文件。 有没有还写了一个可能性成Excel文件?实际上,这与或多或少相同,但可以在文件中存储VBA宏。我需要这样做是因为我想在创建文件后插入并运行VBA宏。 但是,当在常规文件上尝试此操作时,我在弹出窗口中收到以下错误消息: 然后,我可以手动选择将文件保存为包含宏的文件。但是,我希望自动执行此操作而无需执行额外的步骤

  • 我有一个数据帧: 我需要添加第一行[2,3,4]来获得: 我尝试了和函数,但找不到正确的方法。 如何添加/插入系列到数据框?

  • 我正试图在模式下将写入文件格式(在最新的pandas版本0.21.0中引入)。但是,文件将被新数据覆盖,而不是附加到现有文件。我错过了什么? 写入语法是 读取语法是

  • 问题内容: 这可能很容易,但是我有以下数据: 在数据框1中: 在数据框2中: 我想要一个具有以下形式的数据框: 我尝试使用该方法,但是得到了交叉连接(即笛卡尔积)。 什么是正确的方法? 问题答案: 通常看来,您只是在寻找联接: