当前位置: 首页 > 面试题库 >

PyODBC:即使存在,也无法打开驱动程序

华子航
2023-03-14
问题内容

我是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’(由

搜索了一会后,我发现它是因为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

sudo ln -s /usr/lib64/libodbcinst.so.2 /lib/x86_64-linux-gnu/libodbcinst.so.2


 类似资料:
  • 我正试图从我的java类中打开Google网站来测试Selenium。 启动端口36521上的ChromeDriver 75.0.3770.90(A6DCAF7E3EC6F70A194CC25E8149475C6590E025-Refs/Branch-Heads/3770@{#1003})。只允许本地连接。 请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码访问。 线程“mai

  • 我是JDBC的初学者,我想连接到本地机器上的MySQL实例。下面是我试图连接到的MySQL实例。它存在于我的本地机器上。它有一个名为my_db2的数据库。我想和它的桌子一起工作。 为了连接到上面的数据库,我编写了以下代码。 然而,当我尝试连接到数据库时,我总是得到这个错误。 在这一点上,我开始得到以下错误。 据我所知,我正确地执行了所有步骤,将mysql-connector文件添加到库中。我不确定

  • 问题内容: 背景: 我已经待了大约一个星期,但还是没有运气。我的系统(Ubuntu 16.04.1 LTS)上的相同驱动程序(13.0)与我的pyodbc python(Python 2.7.12 :: Anaconda 4.1.1(64位))库配合使用就很好。我尝试在AWS E2上设置虚拟机,但如下所述无法在其中正常工作。 目标: 在Amazon Ubuntu 16.04.1 LTS(GNU /

  • 问题内容: 执行上述代码时显示错误: 线程“主”中的异常org.openqa.selenium.remote.SessionNotFoundException:启动Internet Explorer发生意外错误。所有区域的保护模式设置都不相同。对于所有区域,“启用保护模式”必须设置为相同的值(启用或禁用)。(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:1.33秒 有人可以建议解决此问题

  • 我编写了以下代码,以使用selenium webdriver V 2.53.0在Microsoft Edge浏览器中启动网页:

  • 我正在尝试使用下面的代码行在selenium中打开新选项卡 但是标签没有打开。谁能说出这个命令有什么问题?也可以解释一下此命令中使用的?我尝试搜索但没有正确的答案 下面的完成不起作用。它在chrome中的同一选项卡中打开gmail和堆栈溢出,而不是打开新选项卡