无驱动安装权限下,能否用纯Python查询Microsoft SQL Server?
无需系统驱动的SQL Server Python查询方案
针对你的需求(无管理员权限、跨Linux/Windows环境、无需安装系统级驱动),有两个可行的Python库方案:
1. pytds(纯Python TDS协议实现)
pytds是完全基于Python编写的SQL Server客户端,直接实现了TDS通信协议,不需要任何系统级驱动(不管是ODBC还是freetds),跨Linux和Windows都能直接用,只要有pip权限就能安装。
操作步骤
- 安装:
pip install pytds - 基础查询代码:
import pytds # 用with语句自动管理连接和游标 with pytds.connect( server="sql-server-host", database="target-db", user="your-username", password="your-password", port=1433 ) as conn: with conn.cursor() as cursor: cursor.execute("SELECT * FROM your-table LIMIT 10") # 遍历查询结果 for row in cursor.fetchall(): print(row)
2. pymssql(静态链接依赖版)
pymssql是老牌的SQL Server客户端库,原本依赖freetds,但现在PyPI上的预编译wheel包已经静态链接了freetds,不需要在系统里单独安装驱动。只要你的pip能下载到预编译包(而非源码编译版本),就能直接用。
操作步骤
- 安装:
pip install pymssql - 基础查询代码:
import pymssql # 连接并执行查询 with pymssql.connect( server="sql-server-host", user="your-username", password="your-password", database="target-db" ) as conn: with conn.cursor() as cursor: cursor.execute("SELECT TOP 10 * FROM your-table") rows = cursor.fetchall() for row in rows: print(row)
如果安装时遇到源码编译报错(提示找不到freetds),可以手动去PyPI下载对应平台的wheel文件(比如pymssql-2.2.7-cp310-cp310-linux_x86_64.whl),再用pip install 文件名安装,就能避开系统依赖问题。
方案选择建议
- 优先选pytds:纯Python实现,没有任何隐藏依赖,跨平台兼容性拉满,完全符合无管理员权限的场景。
- 选pymssql:如果追求稍好的性能(部分逻辑用C实现),且能确保安装到静态链接的wheel包,也是可靠的选项。
两者都能满足你日常Linux查询和Windows开发的需求,无需安装系统级的SQL Server驱动。
内容的提问来源于stack exchange,提问作者neves
相关产品推荐
相关产品推荐

