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

使用Python+SQLAlchemy查询Oracle数据库时如何获取查询结果列名

问题原因

直接将SQLAlchemy查询返回的行对象列表传入pd.DataFrame时,pandas不会自动读取查询结果元数据中的列名,只会使用默认的数字索引作为列名。

解决方案

  • 方案1(推荐):使用pandas内置方法直接读取
    直接调用pd.read_sql_query传入查询语句和连接对象,会自动解析列名,同时用上下文管理器管理连接避免资源泄漏:

    import pandas as pd
    
    with engine.connect() as conn:
        df = pd.read_sql_query(stmt, con=conn)
    
  • 方案2:手动指定列名
    如果你需要自行控制查询执行逻辑,可以从查询结果集的keys()方法获取列名,传入DataFrame的columns参数:

    with engine.connect() as conn:
        results = conn.execute(stmt)
        df = pd.DataFrame(results.fetchall(), columns=results.keys())
    

补充说明

你之前手动调用connection.close()的写法存在风险:如果代码在关闭连接前报错,会导致连接未正常释放。使用with上下文管理器会在代码块执行结束后自动关闭连接,稳定性更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:09:03