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

Pandas v2.0.0中read_sql_query返回单元格值重复列名问题求助

Pandas v2.0.0与pymssql配合使用read_sql_query的异常问题及解决办法

问题描述

在Pandas v2.0.0(2023年4月3日发布)中,使用pymssql连接执行read_sql_query函数时出现异常:结果集行数完整,但所有单元格值都重复显示列名;而在旧版本v1.5.3中功能完全正常。

复现代码

import pandas as pd
import pymssql

# 替换为实际连接参数
user = "your_user"
password = "your_password"
host = "your_host"
db = "your_db"

conn = pymssql.connect(user=user, password=password, host=host, database=db, as_dict=True, autocommit=True)
result_set = pd.read_sql_query("select * from table", conn)
print(result_set.head())

结果对比

  • v2.0.0异常结果:
Column AColumn B
Column AColumn B
Column AColumn B
  • v1.5.3正常结果:
Column AColumn B
12
34

环境版本:Python 3.10.5,Pandas 2.0.0

替代解决办法(无需降级Pandas)

1. 移除pymssql连接的as_dict=True参数

pymssql的as_dict=True会让游标返回字典格式的行数据,Pandas 2.0.0对这类游标数据的解析逻辑发生了变化。移除该参数后,游标默认返回元组格式数据,即可正常解析:

conn = pymssql.connect(user=user, password=password, host=host, database=db, autocommit=True)

2. 手动处理游标结果并转换为DataFrame

绕开Pandas的read_sql_query,直接通过pymssql游标获取数据后手动构建DataFrame:

import pandas as pd
import pymssql

conn = pymssql.connect(user=user, password=password, host=host, database=db, as_dict=True, autocommit=True)
cursor = conn.cursor()
cursor.execute("select * from table")

# 提取列名
columns = [col[0] for col in cursor.description]
# 提取行数据(将字典转为列表)
rows = [list(row.values()) for row in cursor.fetchall()]

cursor.close()
conn.close()

# 构建DataFrame
result_set = pd.DataFrame(rows, columns=columns)
print(result_set.head())

3. 替换为兼容性更好的SQL驱动

改用pyodbc替代pymssql,该驱动在Pandas 2.0.0中的兼容性更稳定,连接示例:

import pandas as pd
import pyodbc

conn_str = f"DRIVER={{ODBC Driver 17 for SQL Server}};SERVER={host};DATABASE={db};UID={user};PWD={password}"
conn = pyodbc.connect(conn_str)
result_set = pd.read_sql_query("select * from table", conn)
print(result_set.head())

是否属于破坏性变更

属于破坏性变更。Pandas 2.0.0对SQL游标返回数据的解析逻辑进行了调整,原本兼容pymssqlas_dict=True返回格式的逻辑被修改,且未做向前兼容处理,导致原有正常工作的代码出现异常。这类变更通常会记录在官方迁移文档中,但可能因测试覆盖场景不全,导致该问题未被提前发现。

内容的提问来源于stack exchange,提问作者Raj Kishore Patra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:45:22