pyodbc SQL Server 驱动程序错误 [unixODBC][驱动程序管理器] 无法打开 lib '/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.1.1'

问题描述 投票:0回答:1

我无法使用 pyodbc 连接到 SQL Server

pyodbc.connect(f'DRIVER={{ODBC Driver 18 for SQL Server}};SERVER={host};DATABASE={db};UID={user};PWD={pwd};TrustServerCertificate=yes;')

出现错误:无法打开 lib '/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.1.1'

但是我能够运行此命令并且连接正常:

isql -v -k “DRIVER={{ODBC Driver 18 for SQL Server}};SERVER={host};DATABASE={db};UID={user};PWD={pwd};TrustServerCertificate=yes;”

我已经尝试了每一个建议。甚至将 sql server 驱动程序路径添加到我的 LD_LIBRARY 环境变量中。

这是我运行后得到的结果:odbcinst -q -d

[ODBC Driver 18 for SQL Server]
[ODBC Driver 17 for SQL Server]

odbcinst -j

$ odbcinst -j unixODBC 2.3.7
DRIVERS. . . .......: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES /etc/ODBCDataSources
SQLULEN Size........:8
SQLLEN Size.........:8
SQLSETPOSIROW Size.: 8

这是odbcinst.ini的内容

[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.1.1
UsageCount=1

[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.6.so.1.1
UsageCount=1

运行 RHEL 8、python 3.9.10 和 pyodbc==4.0.39

更多详情

import pyodbc

pyodbc.drivers()
# ['ODBC Driver 18 for SQL Server', 'ODBC Driver 17 for SQL Server']

pyodbc.dataSources()
#{}
python sql-server linux pyodbc
1个回答
0
投票

查看OP问题的评论,其中提到python模块已加载但不一定安装在您的系统上,这可能与用于编译python二进制文件的gcc版本与不兼容有关用于编译 unixODBC 二进制文件的版本。我曾经遇到过类似的问题。

  • 所以我最终直接在系统上安装了python。这解决了我的问题。

  • 如果不可能,请尝试从模块存储库加载不同版本的 python。该版本的 python 可能是使用不同版本的 gcc 编译的。

© www.soinside.com 2019 - 2024. All rights reserved.