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

如何在SQLAlchemy AsyncSession/AsyncEngine中使用df.to_sql()

解决用AsyncEngine执行pandas to_sql的报错问题

你遇到的AttributeError: 'Session' object has no attribute 'cursor',是因为df.to_sql需要的是数据库连接对象(DBAPI Connection)或者SQLAlchemy Engine,但你直接把Session传给它时,它会把Session当成连接来调用cursor方法,而Session本身没有这个属性,所以报错。

给你两种可行的解决方法:

方法一:通过Session获取连接执行

在run_sync里,利用同步Session拿到实际的数据库连接,传给df.to_sql的con参数:

await session.run_sync(
    lambda sync_session: df.to_sql(
        name="temp_data",
        con=sync_session.connection(),
        if_exists="replace",  # 按需设置,比如append/replace/fail
        index=False  # 按需决定是否写入索引
    )
)

方法二:直接用AsyncEngine的run_sync方法

如果不需要Session的事务管理,直接用AsyncEngine的run_sync来执行同步的to_sql操作更简单:

await engine.run_sync(
    lambda sync_engine: df.to_sql(
        name="temp_data",
        con=sync_engine,
        if_exists="replace",
        index=False
    )
)

两种方法的核心都是给df.to_sql传入正确的con参数——要么是连接对象,要么是Engine,而不是Session本身。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:08:11