我是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”,该文件实际上存在!
那么为什么它告诉我它不存在呢?以下是一些可能的线索:
我不知道如何解决这些问题。
谢谢 !
在按照Microsoft SQL Server Linux ODBC Driver教程学习后,在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’(由
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
搜索了一会后,我发现它是因为Ubuntu的仓库在3.4.20版本上没有GLIBCXX,它的版本是3.4.19。
然后,我向Ubuntu添加了一个存储库,对其进行了更新并强制其升级libstdc ++ 6
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get upgrade sudo apt-get install libstdc++6
问题已解决,已通过isql测试:
+---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL>
之后,我尝试使用pdo_odbc(PHP)进行测试,然后给了我相同的驱动程序未找到错误。为了解决这个问题,我必须创建一个符号链接来解决libodbcinst.so.2:
libodbcinst.so.2
sudo ln -s /usr/lib64/libodbcinst.so.2 /lib/x86_64-linux-gnu/libodbcinst.so.2