You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Pandas将DataFrame创建到PostgreSQL的Staging模式?

解决方案

你遇到的问题是因为to_sql会把传入的第一个参数当作完整的表名,不会自动解析「模式.表名」的结构,所以PostgreSQL默认在public模式下创建了名为Staging.tblsalesdata的表。下面是两种正确的实现方式:

方法一:使用schema参数(推荐)

to_sql方法内置了schema参数,专门用来指定目标数据库模式,直接传入'Staging'即可:

from sqlalchemy import create_engine

# 建立数据库连接
engine = create_engine('postgresql://postgres:root@localhost:5432/TestWarehouse')
# 在Staging模式下创建tblsalesdata表
sales_df_col.to_sql(
    name='tblsalesdata',
    con=engine,
    schema='Staging'
)

方法二:修改连接字符串指定默认模式

可以在创建引擎时,通过连接字符串的options参数设置默认搜索路径为Staging,后续to_sql无需额外指定schema就会默认使用该模式:

from sqlalchemy import create_engine

# 连接时指定默认模式为Staging
engine = create_engine('postgresql://postgres:root@localhost:5432/TestWarehouse?options=-csearch_path%3DStaging')
# 直接创建表,默认会在Staging模式下
sales_df_col.to_sql(name='tblsalesdata', con=engine)

注意事项

  • 方法一灵活性更高,适合需要在不同模式间切换操作的场景;
  • 方法二会改变当前连接的默认模式,后续所有未指定schema的数据库操作都会使用Staging模式,需根据实际需求选择。

内容的提问来源于stack exchange,提问作者Awesome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:40:33