如何在Ubuntu上配置SSL支持pymssql?

Gor*_*son 4 python ubuntu pymssql

在Ubuntu上配置带有SSL支持的pymssql所需的步骤是什么,所以我可以连接到需要加密连接的SQL Server实例(例如Azure)?

Gor*_*son 9

Ubuntu 16.04 LTS

(请参阅Ubuntu 18.04 LTS的这个答案.)

以下是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
Run Code Online (Sandbox Code Playgroud)

点击freetds.org上的"稳定版本"链接,下载FreeTDS的源代码.解压缩归档文件,切换到刚创建的目录(例如,freetds-1.00.104),然后执行

./configure --with-openssl=/usr/include/openssl --enable-msdblib
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

检查构建

tsql -C
Run Code Online (Sandbox Code Playgroud)

并确保列出"TDS版本:auto"和"OpenSSL:是".然后tsql用来测试"原始"FreeTDS连接,例如,

tsql -H example.com -p 1433 -U youruserid -P yourpassword
Run Code Online (Sandbox Code Playgroud)

现在安装pymssql.默认情况下,最新版本作为预编译的"wheel"文件提供,支持加密连接,因此我们需要从pymssql源安装.从pymssql 2.1.4开始,构建过程依赖于Cython,所以首先要做

pip3 install --user Cython
Run Code Online (Sandbox Code Playgroud)

然后呢

pip3 install --user --no-binary pymssql pymssql
Run Code Online (Sandbox Code Playgroud)

构建完成后,安装pymssql.

但是......它还行不通.当我们尝试使用import pymssqlPython时,我们得到了

ImportError:libsybdb.so.5:无法打开共享对象文件:没有这样的文件或目录

因为显然该文件处于"错误"的位置.修复(参考:这里)是在"正确"的位置创建一个指向实际文件的符号链接

sudo ln -s /usr/local/lib/libsybdb.so.5 /usr/lib/libsybdb.so.5
sudo ldconfig
Run Code Online (Sandbox Code Playgroud)

现在pymssql适用于SSL连接.

无论如何,对我来说.


Gor*_*son 5

Ubuntu 18.04 LTS

Ubuntu 18.04存储库将安装支持GnuTLS的FreeTDS版本,因此从源代码构建FreeTDS并不是绝对必要的。但是,我们仍然需要从源代码构建pymssql,因为只需执行通常的操作即可

pip3 install --user pymssql
Run Code Online (Sandbox Code Playgroud)

将安装不支持安全连接的预编译“轮子”。相反,我们需要做

sudo apt install python3-pip freetds-dev
pip3 install --user Cython
pip3 install --user --no-binary pymssql pymssql
Run Code Online (Sandbox Code Playgroud)