使用 putty 私钥、sqlalchemy 和 pyodbc 从 linux 环境连接到 sql serverConnect to sql server using putty private key, sqlalchemy and pyodbc

Connect to sql server from linux environment using putty private key, sqlalchemy and pyodbc

提问人:nsk 提问时间:10/17/2021 最后编辑:jarlhnsk 更新时间:11/23/2023 访问量:10852

问:

嗨,我正在尝试从 linux(ubuntu 服务器)的 sql 服务器读取数据帧。 文件(gscm.ppk)包含管理密钥

我使用以下格式连接到sql server:

*import urllib
 import pandas as pd
 params = urllib.parse.quote_plus("DRIVER={SQL Server Native Client 
 11.0};"
                             "SERVER=dagger;"
                             "DATABASE=test;"
                             "UID=ubuntu;")
 engine = sa.create_engine("mssql+pyodbc:///?odbc_connect= 
 {}".format(params))
 df= pd.read_sql('SELECT * FROM ROBALS', engine)*

我一直收到此错误:

sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('01000', "[01000] [unixODBC] 
[Driver Manager]Can't open lib 'SQL Server' : file not found (0) 
(SQLDriverConnect)")
(Background on this error at: https://sqlalche.me/e/14/dbapi)

我已经下载了 Ubuntu 20.04 附带的驱动程序

python sql-server ubuntu pyodbc

评论


答:

0赞 Matt Kornfield 12/7/2023 #1

您的代码看起来大部分都很好,只是该参数看起来被忽略/不太正确。我无法判断它是否与代码中的空格有关,但是如果我在我的实例上运行此代码,我会得到类似的错误,但它将引用正确的实例。Driver

根据这个答案,我将驱动程序更新为路径,并且我没有查找失败,因此,如果您安装了 odbcsql18 驱动程序,则如下所示,可能会用作替代。

"DRIVER=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.1.1;"

我已使用以下方法在容器上安装了这些较新的驱动程序

curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list
apt-get update && ACCEPT_EULA=Y apt install unixodbc jq msodbcsql18 mssql-tools18 unixodbc-dev -y