在 Ubuntu 上配置(现在是 discontinued)支持 SSL 的 pymssql 需要哪些步骤,这样我才能连接到需要加密连接的 SQL Server 实例(例如,Azure)?
最佳答案
Ubuntu 16.04 长期支持版
(有关 Ubuntu 18.04 LTS,请参阅 this answer。)
以下内容对我全新安装 Xubuntu 16.04 LTS x64 有效:
第一个挑战是我们从 Ubuntu 16.04 存储库获得的 FreeTDS 不支持“开箱即用”的 SSL,因此我们需要构建自己的。首先安装 python3-pip
(它还会安装 build-essentials、g++ 以及我们需要的其他一些东西)和 libssl-dev
(需要 OpenSSL 库用于构建支持 SSL 的 FreeTDS)
sudo apt install python3-pip libssl-dev
单击 freetds.org 上的“稳定版”链接下载 FreeTDS 的源代码.解压存档,切换到您刚刚创建的目录(例如 freetds-1.00.104),然后执行
./configure --with-openssl=/usr/include/openssl --enable-msdblib
make
sudo make install
检查构建
tsql -C
并确保列出“TDS 版本:自动”和“OpenSSL:是”。然后使用 tsql
测试“原始”FreeTDS 连接,例如,
tsql -H example.com -p 1433 -U youruserid -P yourpassword
现在安装pymssql。默认情况下,最新版本作为预编译的“wheel”文件提供,不支持加密连接,因此我们需要从 pymssql 源安装。从pymssql 2.1.4开始,构建过程依赖Cython,所以先做
pip3 install --user Cython
然后做
pip3 install --user --no-binary pymssql pymssql
构建完成后,将安装 pymssql。
但是……它还行不通。当我们尝试在 Python 中执行 import pymssql
时,我们得到了
ImportError: libsybdb.so.5: cannot open shared object file: No such file or directory
因为显然该文件位于“错误”位置。解决方法(引用:here)是在指向实际文件的“正确”位置创建一个符号链接(symbolic link)
sudo ln -s /usr/local/lib/libsybdb.so.5 /usr/lib/libsybdb.so.5
sudo ldconfig
现在 pymssql 使用 SSL 连接。
无论如何,对我来说。
关于python - 如何在 Ubuntu 上配置支持 SSL 的 pymssql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39395548/