大家好,我是木木。
今天给大家分享一个高效的 Python 库,mssql-python。
mssql-python
mssql-python 是 Microsoft 官方推出的 SQL Server Python 驱动,目标是让 Python 程序直接连接 SQL Server 和 Azure SQL。它遵循 DB-API 思路,也把连接、事务、超时和认证这些工程细节放到一套更现代的接口里。对企业内部系统来说,官方驱动的意义不只是能连库,而是维护节奏、兼容性和排障路径更清楚。
项目地址:https://github.com/microsoft/mssql-python
官方文档:https://github.com/microsoft/mssql-python
三大特点
官方维护
由 Microsoft 维护,适合 SQL Server 和 Azure SQL 的长期项目。
认证清楚
内置多种 Azure AD 认证枚举,便于企业环境统一身份。
连接可控
支持超时、事务和连接参数,生产环境更容易收敛边界。
最佳实践
安装方式:pip install mssql-python。
第一段代码解决的问题是:确认驱动版本、可用认证方式和常用连接属性,方便在项目初始化时做环境自检。
importwarningswarnings.filterwarnings("ignore")importmssql_pythonasmssqlfromimportlib.metadataimportversionprint("package:",version("mssql-python"))print("connect function:",hasattr(mssql,"connect"))print("auth modes:",", ".join(a.valueforainmssql.AuthType))print("login timeout attr:",mssql.SQL_ATTR_LOGIN_TIMEOUT)print("connection timeout attr:",mssql.SQL_ATTR_CONNECTION_TIMEOUT)
第二段代码解决的问题是:连接串里常常有密码,写日志前应该先做脱敏,尤其是密码里带分号或大括号时。
importwarningswarnings.filterwarnings("ignore")frommssql_python.connection_string_parserimportsanitize_connection_stringraw="Server=tcp:sql-prod.database.windows.net;Database=app;UID=svc;PWD={Top;Secret}}Value};Encrypt=yes"print(sanitize_connection_string(raw))
环境与版本信息
本文示例使用 Python 3.11,mssql-python 1.6.0。示例聚焦连接参数、敏感信息脱敏和类型配置,不连接真实 SQL Server。
高级功能
进阶一点看连接参数。把超时和类型边界提前整理成配置,比把它们散落在业务代码里更容易维护。
importwarningswarnings.filterwarnings("ignore")importmssql_pythonasmssqlattrs_before={mssql.SQL_ATTR_LOGIN_TIMEOUT:5,mssql.SQL_ATTR_CONNECTION_TIMEOUT:5,}options={"autocommit":False,"timeout":5,"attrs_before":attrs_before,}print("autocommit:",options["autocommit"])print("timeout:",options["timeout"])print("attrs_before:",sorted(options["attrs_before"].items()))print("valid sql types:",len(mssql.SQLTypes.get_valid_types()))
适用场景
适合企业系统、内部报表、Azure SQL 应用、SQL Server 数据同步和需要官方驱动支持的 Python 服务。
不适用场景
如果当前系统已经稳定使用成熟 ODBC 封装,迁移前要先验证驱动能力;如果只是一次性导出,命令行工具可能更省事。
上线检查
- 确认目标 SQL Server 版本、加密策略和认证方式。
总结
mssql-python 更像是 SQL Server 在 Python 生态里的官方新入口。先把连接、安全和超时做稳,再谈查询封装。