Pypyodbc: Не удается открыть ошибку lib 'FreeTDS': file not found ") при попытке подключения к SQL-серверу

Я пытаюсь подключиться к SQL Server с помощью Pypyodbc на Mac, и я получаю следующую ошибку:

pypyodbc.DatabaseError: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'FreeTDS' : file not found")

Я установил freeTDS и unixodbc

brew install unixodbc
brew install freetds

и вот мое соединение String с фиктивными данными:

connection_String = "Driver=FreeTDS;Server=123.12.12.12;tds_version=7.2;Database=db_db;Uid=username:pwd=password:port=1433"

Ответ 1

Проверьте ваш /etc/odbcinst.ini, или он может быть в /etc/unixODBC/odbcinst.ini

В вашей строке подключения у вас есть что-то вроде этого: "DRIVER = FreeTDS" должна быть запись в этом файле, как показано ниже. Возможно, вам потребуется изменить местоположение вашего драйвера.

[FreeTDS]
Description             = FreeTDS unixODBC Driver
Driver          = /usr/lib64/libtdsodbc.so.0
Setup           = /usr/lib64/libtdsodbc.so.0
UsageCount              = 1

Ответ 2

Во-первых, вы можете использовать pymssql, который не требует настройки unixODBC, что является проблемой здесь.

Чтобы настроить unixODBC с помощью FreeTDS, сделайте следующее: http://www.unixodbc.org/doc/FreeTDS.html

Есть инструмент, который поставляется с FreeTDS, tsql. Используйте его, чтобы проверить строку подключения. Это очень простой инструмент костей и что-то вроде боли.: -/

Наконец, есть аналогичный вопрос с другими проблемами в StackOverflow: Как настроить pyodbc правильно принимать строки из SQL Server с помощью freeTDS и unixODBC?

Ответ 3

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

Мое решение состояло в том, чтобы получить экземпляр AWS на базе Windows, поместить мои сценарии Python, которые взаимодействуют с базой данных MSSQL, и перенести файлы с удаленного компьютера на мой компьютер с помощью Google Диска. Работает как шарм.