如何用Python的Polars库读取SQL Server数据及解决转换报错
问题解决:Polars读取SQL Server及from_pandas报错处理
一、解决from_pandas()报错问题
报错ModuleNotFoundError: pd.Series requires 'pandas' module to be installed,即使已安装pandas,大概率是环境检测或版本兼容问题,按以下步骤排查:
- 确认运行环境与依赖安装环境一致
在代码开头添加验证代码,确认当前环境能正确识别pandas:
import pandas as pd print(pd.__version__) # 应输出1.5.3,与你提供的版本一致
如果输出异常,说明代码运行的虚拟环境与安装依赖的环境不匹配,需切换到正确环境重新运行。
- 升级Polars到最新稳定版
旧版本Polars可能存在依赖检测bug,执行升级命令:
pip install --upgrade polars
- 使用PyArrow转换方式
尝试通过PyArrow中转转换,绕过Polars对pandas的直接检测:
pl_df = pl.from_pandas(df, use_pyarrow=True)
二、直接用Polars读取SQL Server数据的方法
无需通过Pandas中转,Polars支持直接读取SQL查询结果,推荐两种方式:
方式1:使用ConnectorX(已安装)
ConnectorX是Polars推荐的高效SQL数据读取工具,需将连接字符串调整为ConnectorX支持的格式:
import polars as pl query = ''' SELECT DISTINCT TOP 4 rrs.Name as 'Risk Run Name', rds.id as RiskDataSetID FROM nier..RiskDataSet rds LEFT JOIN nier..RiskResultSet rrs ON rds.id = rrs.RiskDataSetID WHERE ismonthly = 0 AND ParentID IS NULL AND NoLossForCMLCorp = 1 ORDER BY 2 DESC ''' # Windows认证的ConnectorX连接字符串 conn_uri = "mssql://@PLA1SQL01\\AAMGRID1PRD/NIER?trusted_connection=yes&driver=SQL+Server" pl_df = pl.read_sql(query, conn_uri)
方式2:使用SQLAlchemy引擎
结合SQLAlchemy创建连接引擎,再传给Polars的read_sql:
import polars as pl from sqlalchemy import create_engine # SQLAlchemy的Windows认证连接字符串 engine = create_engine("mssql+pyodbc://PLA1SQL01\\AAMGRID1PRD/NIER?trusted_connection=yes&driver=SQL+Server") pl_df = pl.read_sql(query, engine)
注意:连接字符串中的driver需与系统中安装的ODBC驱动名称一致,若使用最新的ODBC Driver 17 for SQL Server,需将driver=SQL+Server改为driver=ODBC+Driver+17+for+SQL+Server。
内容的提问来源于stack exchange,提问作者db0
相关产品推荐
相关产品推荐

