使用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
相关产品推荐
相关产品推荐

