有沒有辦法讓pyODBC v3.0.10去尋找unixODBC驅動程序,而不是它看起來想要尋找的iODBC驅動程序?pyODBC拒絕尋找unixODBC,而是尋找iODBC
我的理解是pyODBC v3.0.10應該默認執行此操作,而v3.0.7之前的版本需要手動編輯setup.py文件(請參閱參考here)。
還有一個線索,我跑這個代碼列出我的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。血淋淋的細節記錄在here。
我已經把它縮小到一個特定的問題(我認爲):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)')
感謝您可以擺脫任何光線。
我應該添加兩件事:1)我已經通過終端的isql和tsql命令建立了良好的連接,確認了unixODBC和FreeTDS的良好安裝,以及2)我已經在三個獨立的Mac上覆制了這些結果。 – RJH2
我相信我已經在您的其他問題上回答了這裏:http://stackoverflow.com/questions/37933369/error-connecting-to-ms-sql-server-using-pyodbc-unixodbc-and-freetds-on- a-mac在您的pyodbc.connect()中,您需要將「FreeTDS」替換爲「{FreeTDS}」,並添加「TDS_Version = 7.2」作爲連接參數。 – FlipperPA
謝謝,但給了一個嘗試和相同的錯誤。它似乎沒有評估FreeTDS配置文件(/usr/local/etc/freetds.conf),因爲它似乎並不重要。如果清除整個文件,我會得到相同的錯誤。如上所述,由於某些原因,pyODBC不會查找unixODBC。它甚至從未獲得FreeTDS。 – RJH2