【发布时间】:2015-02-25 16:32:48
【问题描述】:
我正在使用 Python 代码(Pymssql 库)从 MS SQL 服务器进行查询,但是我想知道是否有任何方法可以使连接安全并加密从服务器发送到 python 的数据?
谢谢
【问题讨论】:
标签: python sql-server pymssql
我正在使用 Python 代码(Pymssql 库)从 MS SQL 服务器进行查询,但是我想知道是否有任何方法可以使连接安全并加密从服务器发送到 python 的数据?
谢谢
【问题讨论】:
标签: python sql-server pymssql
可以。
您需要通过 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 时使用捆绑的库。
【讨论】:
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。
【讨论】:
如果您想使用 pymssql 使用安全连接来连接 SQL 服务器,那么您需要在您的主机中提供“安全”语法..
例如
不安全的连接主机:xxx.database.windows.net:1433 安全连接主机:xxx.database.secure.windows.net:1443
【讨论】:
很遗憾没有办法,但你可以使用pyodbc。
【讨论】:
encrypt=yes 之类的内容。查看官方文档中的 ConnectionStrings:code.google.com/p/pyodbc/wiki/ConnectionStrings :-)