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

如何直接从MSSQL Server读取数据至Pandas DataFrame?

嗨,针对你百万级数据从MSSQL直接读取到Pandas DataFrame的需求,这里有几个高效的方案,完全避开toPandas()的性能瓶颈:

方案1:用pymssql直接读取

pymssql是Python生态里专门对接MSSQL的轻量驱动,能直接从数据库拉取数据生成Pandas DataFrame,省去Spark中转的开销。

首先安装依赖:

pip install pymssql

然后写代码:

import pymssql
import pandas as pd

# 替换成你的数据库参数
server = "你的MSSQL服务器地址"
database = "FSA"
username = "DevUser"
password = "password"

# 建立连接并执行查询
with pymssql.connect(server, username, password, database) as conn:
    # 可以写具体的查询语句,避免全表扫描(如果不需要全量数据的话)
    query = "SELECT * FROM dbo.FSA"
    df = pd.read_sql(query, conn)

如果数据量超大,担心内存撑不住,还可以分批次读取:

with pymssql.connect(server, username, password, database) as conn:
    # 按ID分段读取,示例逻辑,你可以根据实际表结构调整
    batch_size = 100000
    offset = 0
    while True:
        query = f"""
            SELECT * FROM dbo.FSA
            ORDER BY id
            OFFSET {offset} ROWS FETCH NEXT {batch_size} ROWS ONLY
        """
        chunk = pd.read_sql(query, conn)
        if chunk.empty:
            break
        # 处理当前批次的数据,比如写入文件或做计算
        process_chunk(chunk)
        offset += batch_size
方案2:用pyodbc驱动(生产环境更推荐)

pyodbc是更稳定、功能更全的MSSQL驱动,支持加密连接、超时设置等生产级配置,兼容性也更好。

先安装依赖:

pip install pyodbc

代码示例:

import pyodbc
import pandas as pd

# 构建ODBC连接字符串,注意替换参数
conn_str = (
    r"DRIVER={ODBC Driver 17 for SQL Server};"
    r"SERVER=你的MSSQL服务器地址;"
    r"DATABASE=FSA;"
    r"UID=DevUser;"
    r"PWD=password;"
)

# 用上下文管理器自动管理连接
with pyodbc.connect(conn_str) as conn:
    query = "SELECT * FROM dbo.FSA"
    df = pd.read_sql(query, conn)

同样支持分块读取,直接用chunksize参数更省心:

with pyodbc.connect(conn_str) as conn:
    query = "SELECT * FROM dbo.FSA"
    # 每次读取10万条数据
    for chunk in pd.read_sql(query, conn, chunksize=100000):
        # 处理当前批次
        process_chunk(chunk)
为什么不推荐先读Spark再转Pandas?

简单说,toPandas()需要把Spark分布式集群上的数据全部拉到Driver节点,这个过程涉及数据序列化、跨节点网络传输,百万级数据下不仅速度慢,还很容易把Driver节点的内存撑爆。而直接用Pandas的数据库读取方法,是直接从数据库拉取数据到本地(或执行代码的机器),完全跳过Spark的中间环节,性能提升非常明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:44:01