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

标签 python ubuntu pymssql

在 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/

相关文章:

ruby - 设置代理记录 Firefox 请求

python - 无法从 linux pyodbc 连接到 SQL Server

Python socketIO-client 连接然后断开

python - 根据字符串拆分将列表拆分为子列表

python - 如何使用 Python 和 pexpect 在多个 session 中运行 linux 可执行文件

python - 参数错误: ValueError: 'params' arg (<class 'list' >) can be only a tuple or a dictionary

python - Cosmos DB - 使用 Python 插入多条记录

python - 如何在 Python 中生成动态(参数化)单元测试?

ubuntu - 在docker下安装时可以回答对话问题吗?