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

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

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

затем я настроил anaconda с средой 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)")

вещь, которую я не undertsand кажется, что PyODBC читает правильный путь к файлу из odbcinst.ini и до сих пор не работает.

Я пошел в " / opt/microsoft/msodbcsql/lib64 / libmsodbcsql-13.0.Итак.0.0 " и файл действительно существует !

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

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

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

спасибо !

6 ответов


у меня также была такая же проблема на Ubuntu 14 после выполнения учебника microsoft для драйвер ODBC для SQL Server Linux.

файл существует, и после запуска ldd он показал, что отсутствуют зависимости:

/опт/Майкрософт/msodbcsql/lib64/libmsodbcsql-13.0.так.0.0: в файле /usr/lib в/x86_64 с-линукс-дистрибутив GNU/libstdc++в.так.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: versionCXXABI_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.икс.)

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

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

conda update libgcc

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

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

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

наконец, я нашел решение по замене водитель стоимостью

cnxn = pyodbc.подключение('DRIVER={/usr/local/lib / libmsodbcsql.13.dylib нужна}; SERVER=myServerIP, 1433; DATABASE=myDBName;UID=sa;PWD=dbPassword')

мой Дев среды

  • MAC OS EI Capitan
  • python 3.6.1 в Anconda

следующие предложения могут помочь решить эту проблему:


может быть, немного поздно, но я оставляю эти сценарии, которые работали для меня.

моя проблема была такой же, как у вас, и я протестировал все параметры, такие как изменение местоположения драйвера, создание символической ссылки, изменение /etc/*.ini-файлы и т. д... ничего не помогало.

моя проблема, запуск python 3.6, пакет pyodbc в контейнере docker из alpine была библиотека libssl1.0.0

здесь вы найдете мой сценарий установки для pyodbc Debian 8 (alpine) docker image использование драйвера v13

DRIVER={ODBC драйвер 13 для SQL Server}

команда, которую я запускаю для подключения к базе данных, была:

import pyodbc
connection_string = 'DRIVER={ODBC Driver 13 for SQL Server};'
connection_string += 'SERVER={0};DATABASE={1};UID={2};PWD={3};'.format(host,dbname,user,pwd)
connection = pyodbc.connect(connection_string)

была такая же проблема один раз.. 1.попробуйте conda update libgcc (это потому, что pyodbc, установленный через pip и conda, ищет разные версии файла..)..это могло быть исправлено ..... ссылка:https://github.com/ContinuumIO/anaconda-issues/issues/1639 искать nehaljwani ответа .

2.также проверьте номер версии файла odbc в файле /etc/odbcinst.ini и / etc / odbc.ini ...имена должны совпадать, а также путь драйвера.