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

如何用SQLAlchemy执行含临时表的SQL查询并导出为Pandas DataFrame?

如何执行包含临时表的SQL Server查询并将结果存入Pandas DataFrame?

问题原因

你遇到的ResourceClosedError是因为SQL Server执行DROP TABLE和SELECT INTO语句时,会返回“影响行数”的状态消息,这些消息会被当作独立的结果集返回给客户端。pandas.read_sql会尝试读取第一个结果集,而这个结果集没有数据行,因此触发错误。

解决方案

最直接的修复方法是在SQL脚本开头添加SET NOCOUNT ON;,关闭这些计数消息,确保只有最后一个SELECT语句的结果集被返回:

修改后的SQL脚本:

SET NOCOUNT ON;
DROP TABLE IF EXISTS #temp
SELECT
    TOP 100 NAME
    INTO #temp
FROM
    DB_CLI

SELECT * FROM #temp

补充说明

  • SET NOCOUNT ON会抑制SQL Server返回每个语句影响的行数信息,避免这些空结果集干扰pandas对有效数据结果的读取。
  • 临时表是会话级的,你的代码中使用engine.begin()的上下文管理器确保了所有SQL语句在同一个数据库连接会话中执行,因此后续查询可以访问到创建的临时表,这部分逻辑是正确的。
  • 检查连接字符串中的服务器名称是否正确,比如如果是命名实例,需要写成SERVER=SERVER\\INSTANCE(注意Python中反斜杠需要转义)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:15:19