PyODBC: невозможно открыть драйвер, даже если он существует

Я новичок в мире Linux, и я хочу запросить Microsoft SQL Server с Python. Я использовал его в Windows, и это было прекрасно, но в Linux это довольно болезненно.

Через несколько часов мне наконец удалось установить драйвер Microsoft ODBC на Linux Mint с помощью unixODBC.

Затем я создал анаконду с окружением python 3.

Затем я делаю это:

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», и файл действительно существует!

Так почему это говорит мне, что этого не существует? Вот некоторые возможные подсказки:

  • Я нахожусь в виртуальной среде
  • Мне нужно иметь права на чтение, потому что это корневой путь к файлу

Я не знаю, как решить любую из этих проблем.

Благодаря !

    3 Solutions collect form web for “PyODBC: невозможно открыть драйвер, даже если он существует”

    У меня также была та же проблема на Ubuntu 14 после выполнения руководства по Microsoft для драйвера ODBC для SQL Server Linux ( https://msdn.microsoft.com/en-us/library/hh568454%28v=sql.110%29.aspx?f = 255 & MSPPError = -2147217396 ).

    Файл существует, и после запуска 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 не было GLIBCXX версии 3.4.20, это было на 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

    Я нашел ответ, который работает для меня здесь . Это для python 2.7 (так что может не работать для тех, кто ищет решение для python 3.x).

    Предлагаемое решение – обновить libgcc: 4.8.5-2 -> 5.2.0-0

    Для обновления libgcc используйте эту команду

     conda update libgcc 

    У меня была такая же проблема «файл не найден (0) (SQLDriverConnect)» на MAC OS со следующим кодом

    cnxn = pyodbc.connect (' DRIVER = {драйвер ODBC 13 для SQL Server} ; SERVER = myServerIP, 1433; DATABASE = myDBName; UID = sa; PWD = dbPassword)

    после googling в течение двух дней, я не могу исправить проблему даже изменить freetds.conf, odbcinst.ini и odbc.ini

    наконец, я нашел решение, заменив значение DRIVER

    cnxn = pyodbc.connect (' DRIVER = {/ usr / local / lib / libmsodbcsql.13.dylib} ; SERVER = myServerIP, 1433; DATABASE = myDBName; UID = sa; PWD = dbPassword');

    Моя среда dev

    • MAC OS EI Capitan
    • python 3.6.1 в Анконде
    Python - лучший язык программирования в мире.