我是 linux 世界的新手,我想从 Python 查询 Microsoft SQL Server。我在 Windows 上使用它,它非常好,但在 Linux 上它非常痛苦。
几个小时后,我终于成功在带有 unixODBC 的 Linux Mint 上安装了 Microsoft ODBC 驱动程序。
然后,我用python 3环境设置了一个anaconda。
然后我这样做:
import pyodbc as odbc
sql_PIM = odbc.connect("Driver={ODBC Driver 13 for SQL Server};Server=XXX;Database=YYY;Trusted_Connection=Yes")
它返回:
('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0' : file not found (0) (SQLDriverConnect)")
我不明白的是,PyODBC 似乎从 odbcinst.ini 中读取了正确的文件路径,但仍然无法正常工作。
我去了“/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0”,文件确实存在!
那么为什么它告诉我它不存在呢?以下是一些可能的线索:
- 我在虚拟环境中
- 我需要具有“读取”权限,因为它是根文件路径
我不知道如何解决这些问题中的任何一个。
谢谢 !
原文由 Joseph Yourine 发布,翻译遵循 CC BY-SA 4.0 许可协议
在遵循 SQL Server Linux ODBC 驱动程序 的 Microsoft 教程之后,我在 Ubuntu 14 上也遇到了同样的问题。
该文件存在并且在运行 ldd 后,它显示缺少依赖项:
/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: 版本
GLIBCXX_3.4.20' not found (required by /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0) /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version
CXXABI_1.3.8’ 未找到(必需经过搜索了一段时间后我发现它是因为 Ubuntu 的 repo 在 3.4.20 版本上没有 GLIBCXX,它是 3.4.19。
然后我向 Ubuntu 添加了一个 repo,更新它并强制它升级 libstdc++6
问题解决,用isql测试:
之后我尝试使用 pdo_odbc (PHP) 进行测试,然后它给了我相同的驱动程序未找到错误。为了解决这个问题,我必须创建一个符号链接来修复
libodbcinst.so.2
: