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

如何将pyodbc查询结果列表转换为多列Pandas DataFrame?

解决pyodbc查询结果转Pandas DataFrame成单列的问题

问题根源

你通过pyodbc获取的db_out里的每个元素是pyodbc的Row对象,而非Python原生的列表/元组。虽然打印出来的样子和列表类似,但Pandas无法识别这种特殊对象,会把每个Row当作单个单元格处理,最终形成单列结构。

解决办法

办法一:转换Row对象为原生列表/元组

先把db_out中的每个元素转换为列表,再生成DataFrame:

# 将每个Row对象转为原生列表
converted_data = [list(row) for row in db_out]
# 定义列名
columns = ['col1','col2','col3','col4','col5','col6','col7','col8','col9','col10','col11','col12','col13']
# 生成多列DataFrame
my_new_data_frame = pd.DataFrame(converted_data, columns=columns)

办法二:直接用Pandas的read_sql查询(更高效)

跳过手动处理pyodbc结果的步骤,让Pandas直接完成查询和DataFrame转换:

import pyodbc
import pandas as pd

# 构建Access数据库连接字符串
conn_str = r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=你的数据库文件路径.accdb;'
conn = pyodbc.connect(conn_str)

# 执行查询并直接得到正确结构的DataFrame
query = "SELECT 你的查询字段 FROM 你的表名"
my_data_frame = pd.read_sql(query, conn)

# 关闭数据库连接
conn.close()

这种方式还能自动复用数据库中的列名,无需手动定义(如果需要自定义列名,后续用my_data_frame.columns = columns修改即可)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:18:21