Использование альтернативной установки unixODBC

Я работаю в среде, в которой unixODBC установлен на централизованно смонтированном диске всей организации, но нам (настоящим разработчикам) не разрешено устанавливать в него драйверы или источники данных. Это все в прошлом, но я должен жить с этим.

Прямо сейчас я пытаюсь создать приложение python, которое подключается к серверу mssql 2005 из этого unix enviro, поэтому мне, очевидно, нужны драйверы sql!

Я обошел отсутствие доступа к предустановленному unixODBC, переустановив unixODBC на той части диска, над которой у меня есть полный контроль. Я установил freeTDS и все настроил так, чтобы успешно подключиться к серверу с помощью isql — отлично!

Теперь единственная проблема заключается в том, что когда я выполняю строку в своей программе на Python (которая использует pyodbc), например:

import pyodbc
pyodbc.connect("DSN=<dsn_name>;UID=...;PWD=...", autocommit=True)

я получил

 ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnectW)')

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

Как настроить мои сценарии для поиска моей локальной установки unixODBC вместо той, которая установлена ​​на основном диске?


person matrix10657    schedule 24.10.2011    source источник


Ответы (3)


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

settings['include_dirs'] = ['/opt/local/include']
settings['library_dirs'] = ['/opt/local/lib']

к get_compiler_settings функции.

person tuomur    schedule 24.10.2011
comment
Не могли бы вы немного уточнить? Я никогда не возился с setup.py и не совсем понимаю, что делаю. - person matrix10657; 25.10.2011
comment
Предположим, вы используете pyodbc 2.1.11, добавьте строки, которые я упомянул ниже строки номер 142. Просто убедитесь, что пути указывают на ваши пользовательские каталоги установки. - person tuomur; 25.10.2011
comment
Спасибо @eclaird, у меня была такая же проблема в OS X, где Apple, включив iODBC, просто не работает для версии MSSQL, к которой мне нужно подключиться. У меня были проблемы с сборкой pyodbc для другой установки odbc, но ваше решение сработало как шарм =) - person Justin; 28.06.2013
comment
Это все еще работает с pyodbc 3.0.7 (я думаю), для меня заменил opt на usr, так как я больше пивоваренный тип ;-) и, конечно, как и в ответе snorris, измените настройку библиотек также на «odbc» внутри elif sys. платформа == раздел 'darwin'. После этого я могу общаться с PostgreSQL через ODBC. - person Dilettant; 19.04.2014

Спасибо за приведенный выше ответ - это заставило меня отредактировать get_compiler_settings в setup.py, чтобы он не использовал iodbc по умолчанию.

Что сработало для меня (OS X 10.9, pyodbc 3.0.7):

elif sys.platform == 'darwin':
    # OS/X now ships with iODBC.
    #settings['libraries'].append('iodbc')

    # but I don't want to use iodbc, I want to use brewed unixodbc 
    settings['libraries'].append('odbc')
person snorris    schedule 25.10.2013

Проблема, возможно, в том, что он ищет в глобальном файле ini. Вы можете указать расположение файлов odbc.ini и odbcinst.ini, определив ODBCSYSINI=/path/to/location/of/inifiles

person Nick Gorham    schedule 01.11.2011