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

Python导出DataFrame至PostgreSQL时出现AttributeError错误求助

Python导出DataFrame至PostgreSQL时出现AttributeError错误求助

你好呀!看到你在把清理好的DataFrame导出到PostgreSQL时碰到了AttributeError: 'Engine' object has no attribute 'cursor'这个错误,我之前也踩过类似的坑,给你几个排查和解决的方向:

先检查依赖库的版本与安装情况

这个错误大概率和pandas、SQLAlchemy、psycopg2这几个库的兼容性或者安装问题有关:

  1. 确保psycopg2驱动正确安装:你的连接字符串用的是postgresql+psycopg2,所以必须要有psycopg2相关的包。如果之前装的是psycopg2(需要编译环境)容易出问题,建议换成预编译的psycopg2-binary试试:
    pip install --upgrade psycopg2-binary
    
  2. 升级pandas和SQLAlchemy到兼容的稳定版本:如果你的pandas版本偏旧,而SQLAlchemy用了2.0以上的新版本,就容易出现这类API不兼容的问题。直接升级到最新稳定版就行:
    pip install --upgrade pandas sqlalchemy
    

调整代码的连接传入方式

如果升级后还是有问题,可以试试把SQLAlchemy的连接对象传给to_sql,而不是直接传Engine对象。修改你的代码最后几行:

engine = marcommdb_connection()  
output_table = 'sf_enreg'

# 改成用连接对象来执行
with engine.connect() as conn:
    final_enreg_tbl.to_sql(output_table, conn, index=False, if_exists='replace')

with语句会自动帮你管理连接的打开和关闭,比直接用Engine更稳妥。

额外小检查

最后可以确认下你的final_enreg_tbl确实是pandas的DataFrame对象,偶尔会因为清理数据时的操作(比如转成了其他类型)导致问题,加一行打印验证下:

print(type(final_enreg_tbl))  # 正常应该输出 <class 'pandas.core.frame.DataFrame'>

试试这些方法,应该能解决你的问题~

备注:内容来源于stack exchange,提问作者Hippiepina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 20:05:27