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

Python查询SQL Server表数据时如何输出带表头行的结果

问题根因

现有代码没有读取查询结果对应的列名,创建pandas DataFrame时会默认使用数字序号作为列名;同时从输出看当前返回的行数据没有被逐列拆分,本质是创建DataFrame时没有绑定字段元信息。

修复方案

连接SQL Server的游标对象(pymssql、pyodbc等驱动均支持)在执行查询后,可以通过description属性拿到返回结果的字段元信息,提取每个字段的第一个值就是表头列名,创建DataFrame时传入columns参数即可完成表头绑定。

修正后的可运行代码:

db_cursor = conn.cursor() 
qry = 'select * from ' + tbname
db_cursor.execute(qry)
# 从游标元数据提取表头列名
col_names = [col_info[0] for col_info in db_cursor.description]
table_rows2 = db_cursor.fetchall()
# 构建DataFrame时显式指定列名
df2 = pd.DataFrame(table_rows2, columns=col_names)
print(df2)

运行后输出会完全匹配预期的带表头格式:

SurveyID SurveyName      Sector           Category
0         1      Resfo  Technology  Telecommunication
1         2        ATT  Technology        Social media
2         3     Airtel  Technology  Telecommunication

补充提示:直接拼接字符串生成SQL存在注入风险,如果tbname是外部传入的动态值,建议提前做表名合法性校验,确认传入值属于当前数据库的合法表名列表后再执行查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 00:15:54