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

如何用Python的Polars库读取SQL Server数据及解决转换报错

问题解决:Polars读取SQL Server及from_pandas报错处理

一、解决from_pandas()报错问题

报错ModuleNotFoundError: pd.Series requires 'pandas' module to be installed,即使已安装pandas,大概率是环境检测或版本兼容问题,按以下步骤排查:

  1. 确认运行环境与依赖安装环境一致
    在代码开头添加验证代码,确认当前环境能正确识别pandas:
import pandas as pd
print(pd.__version__)  # 应输出1.5.3,与你提供的版本一致

如果输出异常,说明代码运行的虚拟环境与安装依赖的环境不匹配,需切换到正确环境重新运行。

  1. 升级Polars到最新稳定版
    旧版本Polars可能存在依赖检测bug,执行升级命令:
pip install --upgrade polars
  1. 使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:03:14