Pymssql 可以与 MS SQL Server 建立安全连接 (SSL) 吗?

Posted

技术标签:

【中文标题】Pymssql 可以与 MS SQL Server 建立安全连接 (SSL) 吗?【英文标题】:Can Pymssql have a secure connection (SSL) to MS SQL Server? 【发布时间】:2015-02-25 16:32:48 【问题描述】:

我正在使用 Python 代码(Pymssql 库)从 MS SQL 服务器进行查询,但是我想知道是否有任何方法可以使连接安全并加密从服务器发送到 python 的数据?

谢谢

【问题讨论】:

【参考方案1】:

可以。

您需要通过 OpenSSL 支持 SSL 的 FreeTDS。如果您碰巧使用 Linux(或 Windows 上的 Docker),在 Debian 中安装独立的 FreeTDS 非常容易:

apt-get update
apt-get install freetds-bin freetds-dev
pip install pymssql

不要将 pymssql 与捆绑的 FreeTDS 库一起使用,它显然不支持 SSL。在安装 pymssql 之前设置环境变量 PYMSSQL_BUILD_WITH_BUNDLED_FREETDS=1 时使用捆绑的库。

【讨论】:

【参考方案2】:

pymssql 当然声称能够处理与 SQL Server 的加密连接(通过 OpenSSL)。有些人可能认为不可能的原因之一是 pymssql 2.1.2 之前的 Windows 版本附带 pymssql静态链接到 FreeTDS,仅用于未加密的连接。

从 2.1.2 版开始,pymssql 的 Windows 版本以动态链接到 FreeTDS,因此它可以支持未加密连接(仅通过 FreeTDS)或加密连接(通过 FreeTDS 和 OpenSSL)。有关详细信息 - 以及 重要更新 re:版本 2.1.3 及更高版本 - 请参阅相关答案 here。

【讨论】:

【参考方案3】:

如果您想使用 pymssql 使用安全连接来连接 SQL 服务器,那么您需要在您的主机中提供“安全”语法..

例如

不安全的连接主机:xxx.database.windows.net:1433 安全连接主机:xxx.database.secure.windows.net:1443

【讨论】:

【参考方案4】:

很遗憾没有办法,但你可以使用pyodbc。

【讨论】:

有没有什么好的教程或维基教我如何使用pyodbc? @Mo. pyodbc 是基于 python 的 DB-API,所以如果你知道如何使用 pymssql,那么你就知道了。主要区别在于您需要为您的数据库引擎构建连接字符串,这是关键,您将能够包含诸如encrypt=yes 之类的内容。查看官方文档中的 ConnectionStrings:code.google.com/p/pyodbc/wiki/ConnectionStrings :-)

以上是关于Pymssql 可以与 MS SQL Server 建立安全连接 (SSL) 吗?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我可以使用 tsql 而不是 pymssql 连接到 Azure MS SQL?

Pymssql 无法连接到 Amazon Linux 2 上的 Azure SQL Server

使用 pymssql 将文本文件批量插入 SQL Server

无法使用 pymssql 烧瓶连接到 ms sql 服务器

tsql 实用程序 (FreeTDS) 可以连接到 SQL Server,但 pymssql 不能

是否可以使用 Pymssql 通过域(Windows)用户帐户远程访问 SQL Server 2012