在Ubuntu上配置具有SSL支持的pymssql(现在为discontinued)pymssql,需要执行哪些步骤,以便我可以连接到需要加密连接的SQL Server实例(例如Azure)?
最佳答案
Ubuntu 16.04 LTS
(有关 Ubuntu 18.04 LTS,请参阅 this answer。)
在全新安装 Xubuntu 16.04 LTS x64 时,以下对我有用:
第一个挑战是我们从 Ubuntu 16.04 存储库获得的 FreeTDS 不支持“开箱即用”的 SSL,因此我们需要构建自己的。首先安装 python3-pip
(它还安装 build-essentials、g++ 和一堆我们需要的其他东西)和 libssl-dev
(构建具有 SSL 支持的 FreeTDS 所需的 OpenSSL 库)
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
时,我们得到因为显然那个文件在“错误”的地方。解决方法(ref: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/