2013-12-09 3 views
0

Я установил UnixODBC и FreeTDS через Homebrew с помощью:Настройка дьянго-pyodbc использовать UnixODBC/FreeTDS вместо iODBC

brew install unixodbc 
brew install freetds --with-unixodbc 

Я проверил, что я могу подключиться через FreeTDS с использованием tsql в командной строке.

я получаю следующее сообщение об ошибке, однако предполагая iODBC все еще имеет преимущество:

Error: ('00000', '[00000] [iODBC][Driver Manager]dlopen({FreeTDS}, 6): image not found (0)(SQLDriverConnect)') 

Try, как я мог, я не могу найти никакого объяснения, как сказать ОС с драйверами ODBC предпочесть.

EDIT: Я нашел http://richbs.org/post/43142767072/connecting-to-microsoft-sql-server-from-unix-linux-mac и увидел, что мне не хватает переменной окружения ODBCINI, однако исправление этого не повлияло на ошибку. Однако он зафиксировал isql, который я пренебрег до этого момента.

ответ

4

Хорошо, так это то, что я сделал. Кредит причитается кому-то другому, потому что я не такой умный (по крайней мере, это моя история - я внес изменения в несколько веков назад на другую машину и только открыл ее сегодня, и я предполагаю, что что-то подсказывало, но не могло найти ее Cегодня).

Я предполагаю, что вы используете virtualenv (если нет, то почему бы и нет?). Вам нужно сделать следующее изменение setup.py в модуле pyodbc (клонировать его первый) (строка 145 или около того):

-  settings['libraries'].append('iodbc') 
- 
+  settings['libraries'].append('odbc') 
+  #settings['libraries'].append('iodbc') 

затем запустить python setup.py install. Это (как я понимаю) сужает связь с iODBC и найдет библиотеки odbc из unixODBC.

Это может затруднить развертывание, но я предполагаю, что при развертывании он будет связан с экземпляром Linux (который не будет подвержен проблеме iODBC/unixODBC). Есть комментарий к вопросу о том, как обнаружить разные библиотеки в ветке, подобной полюсу, так что это на чей-то личном списке.

+0

Я заметил, что это работает только если вы установили: '' ODBCINI =/usr/local/etc/odbc.ini; экспортируйте ODBCINI'' в ваш '' ~/.profile'' или аналогичный. – droidballoon

Смежные вопросы