Linux pyodbc нет драйверов

Обновлено: 05.07.2024

Теперь он говорит, чтобы изменить файл odbc.ini, чтобы включить имя сервера и базы данных. Но если я пытаюсь подключиться к нескольким серверам одновременно, как мне настроить файл odbc.ini в этом случае?

Кроме того, в строке подключения к базе данных я должен ввести имя драйвера как или ?

2 ответа

Я хотел получить более подробную информацию о написании драйверов графических устройств и драйверов аудиоустройств с использованием c++ для Linux box. Я новичок в разработке драйверов устройств, пожалуйста, предоставьте мне подробную информацию о разработке/документации для того же самого. Спасибо.

привет нет библиотеки драйверов устройств linux, доступной на моем LInux OS в папке /usr/src/kernels.Can я добавляю или загружаю ее ,если да, то как сделать это .i нужно для разработки драйверов устройств. спасибо

Вот пример, настроенный с FreeTDS, unixODBC и друзьями:

Расположение Driver = может отличаться выше, в зависимости от вашего дистрибутива FreeTDS.

pyodbc connect, DSN бесплатно:

  • Вам придется обновить версию TDS, чтобы она соответствовала версии SQL Server, которую вы используете, и бесплатной версии TDS, которую вы используете. Версия 0.95 поддерживает версию 7.3 TDS.
  • Версия TDS 7.3 будет работать с MS SQL Server 2008 и выше.
  • Используйте версию TDS 7.2 для MS SQL Server 2005.

Подробнее см. Здесь:

если я пытаюсь подключиться к нескольким серверам одновременно, как я должен настроить файл odbc.ini в этом случае?

Если вы хотите подключиться к нескольким серверам, вам нужно будет создать отдельную запись DSN для каждого из них и использовать более одного объекта pyodbc connection . Либо это, либо настройте "Linked Server" на одном из экземпляров SQL Server, чтобы вы могли получить доступ к обоим через одно и то же соединение pyodbc.

в строке подключения к базе данных я должен ввести имя драйвера как или ?

Если вы редактируете "odbc.ini", то вы создаете DSN записи. Вы будете использовать имя DSN в строке подключения, и pyodbc получит подробную информацию (имя сервера, имя базы данных) из соответствующей записи в "odbc.ini".

Похожие вопросы:

Я никогда раньше не использовал ODBC. Я всегда подключался вручную. Теперь я пытаюсь использовать OTL и просто не могу его настроить. Я понял, что по какой-то причине он не читает мои файлы в.

Сайт моего университета всегда выходит из строя каждый день в это время дня, и он остается разбитым в течение 2-3 часов, и это дает эту ошибку: Поставщик Microsoft OLE DB для ODBC драйверов error.

Я хотел получить более подробную информацию о написании драйверов графических устройств и драйверов аудиоустройств с использованием c++ для Linux box. Я новичок в разработке драйверов устройств.

привет нет библиотеки драйверов устройств linux, доступной на моем LInux OS в папке /usr/src/kernels.Can я добавляю или загружаю ее ,если да, то как сделать это .i нужно для разработки драйверов.

У меня есть проблема, когда я не могу заставить Perl DBD::ODBC использовать unixODBC после повторной компиляции и повторной установки. Он был установлен ранее. Я скомпилировал DBD::ODBC для.

Я пытаюсь построить машину науки о данных, способную запускать программы машинного обучения python в производственной среде. Текущие данные бизнес-кейса должны быть извлечены из SQL Server, оценены.

Так как последнее обновление ms-access при использовании pass through query приводит к этой ошибке: Запрос sql server на odbc сделать ошибку - [в Microsoft][диспетчер драйверов ODBC ] Недопустимое.

Всем доброго дня. На Windows список установленных драйверов ODBC находится здесь: HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC водителей На macOS список установленных драйверов ODBC находится.

Я не могу видеть драйверы ODBC 64-bit в выпадающем списке SSIS connection manager? в проекте Visual Studio 2017 SSIS появляются только 32-битные драйверы. Любое решение, чтобы увидеть список.

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

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

Затем я установил анаконду со средой Python 3.

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

Я не понимаю, что PyODBC читает правильный путь к файлу из odbcinst.ini и все еще не работает.

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

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

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

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

У меня также была такая же проблема с Ubuntu 14 после того, как я следовал руководству Microsoft по Драйвер ODBC для Linux для SQL Server.

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

/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: версия GLIBCXX_3.4.20 'не найдена (требуется для / 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: версия CXXABI_1.3.8 'не найдена (требуется для

После некоторого поиска я обнаружил, что в репо Ubuntu не было GLIBC в версии 3.4.20, это было в 3.4.19.

Затем я добавил репозиторий в Ubuntu, обновил его и заставил обновить libstdc ++ 6

Проблема решена, протестировано с помощью isql:

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

cnxn = pyodbc.connect (' DRIVER = ; SERVER = myServerIP, 1433; DATABASE = myDBName; UID = sa; PWD = dbPassword')

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

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

cnxn = pyodbc.connect ( ' ВОДИТЕЛЬ = < / USR / местные / Библиотека / libmsodbcsql.13.dylib >; SERVER = myServerIP , 1433 ; БАЗА ДАННЫХ = myDBName ; UID = са ; PWD = DBPassword ' )

Моя среда разработки

  • MAC OS El Capitan
  • Python 3.6.1 в Анаконде

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

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

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

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

Я решаю эту проблему после установки libssl1.0.0.

Сначала я настраиваю строку подключения следующим образом:

Затем я установил libssl1.0.0:

Наконец, я установил локали:

После выполнения этих шагов мой модуль python смог найти и подключиться к базе данных.

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

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

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

у меня проблемы с получением pyodbc работа. У меня unixodbc , unixodbc-dev , odbc-postgresql , pyodbc пакеты, установленные на моем Linux Mint 14. Я теряю надежду найти решение самостоятельно,любая помощь ценится. Подробности ниже:

работает:

дает мне:

что заставляет меня думать, что есть unixodbc проблемы конфигурации. Здесь мой unixodbc конфигурационный файл содержимое:

/etc/odbcinst.ini :

/etc/odbc.ini :

/.odbc.ini :

Я считаю, что ответ на вашу проблему заключается в том, что в вашем

/.интерфейс ODBC.ini-файл, который вы говорите использовать driver PostgreSQL - но вы не определили этот драйвер в своем /etc/odbcinst.ini-файл. Попробуйте изменить PostgreSQL до PostgreSQL ANSI или PostgreSQL Unicode (оба из которых определены в /etc/odbcinst.ini).

для меня проблема заключалась в фактическом местоположении моего odbc.ini и odbcinst.ini-файл.

на многих системах расположение установки этих файлов находится в /etc/

однако в моем случае эти файлы были расположены под /usr / local/etc/

можно определить, набрав
odbcinst -j

мой odbc.ini-файлы уже существуют в /etc, поэтому решением было скопировать их из /etc/ в / usr / local/etc/

cp /etc/odbc.ini /etc/odbcinst.ini /usr/local/etc/

Edit: также стоит отметить, что путь, выводимый командой odbcinst-j, может меняться в зависимости от использования sudo или нет.

для меня все сводилось к одному символу пробела.

дал мне "имя источника данных не найден и не указан драйвер по умолчанию" ошибка.

удаление всех пробелов перед символом ' = ' заставило его работать.

во вторичном примечании использование osql для тестирования соединений DSN дает вам гораздо более подробное описание любых ошибок. Это очень помогло мне в процессе.

для других устранения этой же общей ошибки убедитесь, что вы случайно не добавили посторонние символы в верхней части odbc.ini-файл-что делает его недействительным, а все объявления источника данных -молча игнорируется (ошибка, не указывающая на конкретную проблему).

У меня такая же проблема. Оказывается, файл источника данных пропустил: /etc/ODBCDataSources . Просто прикоснитесь к этому файлу, и он заработает.

Я нахожусь на машине Centos 7 Linux, пытающейся подключиться к базе данных SQL через pyodbc. Я узнал, что вам нужно настроить DSN, и вы это сделаете, установив драйвер freetds и сделав что-то вроде:

Казалось, что он установлен, но я получаю ту же ошибку. Может кто-нибудь, пожалуйста, присылайте мне ссылку на рабочий пример.

Если вы компилируете FreeTDS из источника, он будет установлен в /usr/local/freetds, IIRC. Вы также можете установить через yum в CentOS, и вам также понадобится unixODBC. В принципе, FreeTDS соединяет SQL Server с unixODBC, а pyodbc соединяет unixODBC с Python.

Вот пример, созданный с помощью FreeTDS, unixODBC и друзей:

Местоположение Driver = может отличаться в зависимости от вашего дистрибутива FreeTDS - если вы скомпилированы из источника, скорее всего, /usr/local/freetds/lib/libtdsodbc.so .

pyodbc connect, DSN бесплатно:

  • Вам нужно будет обновить версию TDS в соответствии с версией SQL Server, на которой вы работаете, и версией Free TDS, которую вы используете. Версия 0.95 поддерживает TDS версии 7.3.
  • TDS Version 7.3 будет работать с MS SQL Server 2008 и выше.
  • Используйте TDS версии 7.2 для MS SQL Server 2005.

Подробнее см. здесь:

Чтобы построить @FlipperPA ответ, неясно, как pyodbc "находит" драйвер FreeTDS. Если у вас есть эта ошибка:

Могут быть другие возможные причины, включая неправильную среду. Вот что я обнаружил:

pyodbc является оболочкой для unixODBC, которая не документирована, но вам нужно установить unixODBC devel packages, прежде чем вы сможете pip install pyodbc . pyodbc передает строку соединения непосредственно в unixODBC.

unixODBC необходимо загрузить общую библиотеку, содержащую драйвер базы данных ODBC, например libtdsodbc.so для FreeTDS. Вы можете установить параметр DRIVER в строке подключения одной из двух вещей:

  • Либо прямой путь к файлу общей библиотеки (например, /usr/local/lib/libtdsodbc.so )
  • Или имя раздела конфигурации в odbcinst.ini , которое содержит параметр Driver = . , указывающий на файл разделяемой библиотеки

Первым способом гарантируется поиск разделяемой библиотеки и хороший способ проверить, есть ли у вас проблемы с окружающей средой, но второй способ является предпочтительным и более переносимым. Подробнее см. здесь:

В этом файле ini перечислены все установленные драйверы. Это находится в /etc/odbcinst.ini. Синтаксис прост; имя, за которым следует имущество который сообщает нам имя файла драйверов. Например:

Имя файла драйвера (т.е. /usr/lib/libsybase.so.11 ) должно быть уникальным. Дружественное имя (т.е. Sybase 11 ) также должно быть уникальным.

Однако это может работать, только если unixODBC может найти ваш файл odbcinst.ini . Кажется, он ищет его:

  • в вашем домашнем каталоге с измененным именем .odbcinst.ini
  • В каталоге, на который указывает переменная среды ODBCSYSINI , если она установлена.
  • В противном случае, в /etc .

Для FreeTDS он должен содержать что-то вроде этого:

Только тогда вы можете использовать DRIVER=FreeTDS в строке подключения и ожидать, что он будет работать (и не получить вышеприведенную ошибку).

Вы также можете использовать команду ldd (в Linux), чтобы проверить, удовлетворены ли все зависимости в библиотеке и могут быть найдены и загружены загрузчиком динамической библиотеки, ld.so :

Если вы все еще застряли, вы можете начать с нуля, следуя этому или ответ.

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

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

Затем я установил anaconda с средой python 3.

Затем я сделаю следующее:

То, что я не недооцениваю, это то, что PyODBC, похоже, читает правильный путь к файлу из odbcinst.ini и по-прежнему не работает.

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

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

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

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

ОТВЕТЫ

Ответ 1

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

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

/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0:/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 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 не было GLIBCXX на версии 3.4.20, это было на 3.4.19.

Затем я добавил репо в Ubuntu, обновил его и принудительно обновил libstdС++ 6

Проблема решена, проверена с помощью isql:

После этого я попробовал тестирование с помощью pdo_odbc (PHP), а затем дал мне тот же самый драйвер, который не нашел ошибку. Чтобы решить эту проблему, мне пришлось создать символическую ссылку для исправления libodbcinst.so.2 :

Ответ 2

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

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

Ответ 3

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

CnXn = pyodbc.connect( ' ВОДИТЕЛЬ = ; SERVER = myServerIP 1433; БАЗА ДАННЫХ = myDBName; UID = са; PWD = DBPassword')р >

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

cnxn = pyodbc.connect( ' ВОДИТЕЛЬ = ; SERVER = myServerIP 1433; БАЗА ДАННЫХ = myDBName; UID = са; PWD = DBPassword')

My dev environment

  • MAC OS EI Capitan
  • python 3.6.1 в Анконде

Ответ 4

Следующие рекомендации могут помочь решить проблему:

  • Убедитесь, что INI файл конфигурации диска существует odbcinst -j (отметьте odbcinst.ini ).
  • Убедитесь, что путь к настраиваемому драйверу из вашего файла INI (run: odbcinst -j ) существует и имеет флаги разрешения на чтение и выполнение ( O_RDONLY|O_CLOEXEC ).

Если у вас все еще есть ошибка, не найденная файлом, несмотря на существование файла, проблема может быть связана с несоответствием версии libgcc по nehaljwani Комментарий GitHub. Решение состоит в том, чтобы обновить ваш libgcc , выполнив команду conda update libgcc .

Читайте также: