Есть ли способ заставить pyODBC v3.0.10 искать драйвер unixODBC вместо драйвера iODBC, который он, кажется, хочет искать?
Насколько я понимаю, pyODBC v3.0.10 должен делать это по умолчанию, в то время как версии до v3.0.7 требовали ручного редактирования файла setup.py (см. ссылку здесь).
Еще одна подсказка: я запустил этот код, чтобы вывести список своих источников ODBC, и он ничего не вернул:
sources = pyodbc.dataSources()
dsns = list(sources.keys())
dsns.sort()
sl = []
for dsn in dsns:
sl.append('%s [%s]' % (dsn, sources[dsn]))
print('\n'.join(sl))
Дополнительная информация
Я изо всех сил пытался создать соединение с MSSQL Server, используя следующую настройку: pyODBC --> unixODBC --> FreeTDS --> MS SQL. Подробности задокументированы здесь.
Я сузил его до конкретной проблемы (я думаю): пакет pyODBC ищет драйвер iODBC вместо драйвера unixODBC, который я установил и настроил. Я верю в это, потому что когда я запускаю:
import pyodbc
pyodbc.connect(
'DRIVER=FreeTDS;'
'SERVER=MyServerIP;'
'PORT=1433;'
'DATABASE= DatabaseName;'
'UID=MyUsername;'
'PWD=MyPassword')
Я получаю эту ошибку со ссылкой на отсутствие драйвера iODBC:
---------------------------------------------------------------------------
Error Traceback (most recent call last)
<ipython-input-12-607f0d66e615> in <module>()
1 pyodbc.connect(
----> 2 'DRIVER=FreeTDS;'
3 'SERVER= MyServerIP;'
4 'PORT=1433;'
5 'DATABASE= DatabaseName;'
Error: ('00000', '[00000] [iODBC][Driver Manager]dlopen(FreeTDS, 6): image not found (0) (SQLDriverConnect)')
Спасибо за любой свет, который вы можете пролить.