我在使用pyobdc訪問ms-sql數據庫時遇到問題。pyodbc無法在RedHat 5.4上工作。嘗試使用unixODBC和FreeTDS連接到ms-sql數據庫服務器?
下面是系統配置: Python的2.7.11 Pyodbc 3.0.7 的RedHat 5.4(Tikanga)32位系統 的Microsoft SQL Server 2012(數據庫服務器) 的unixODBC 2.3.0
$ tsql -C
輸出:
Compile-time settings (established with the "configure" script)
Version: freetds v0.91
freetds.conf directory: /etc
MS db-lib source compatibility: yes
Sybase binary compatibility: no
Thread safety: yes
iconv library: yes
TDS version: 5.0
iODBC: no
unixodbc: yes
SSPI "trusted" logins: no
Kerberos: no
$ odbcinst -j
出放:
unixODBC 2.3.0
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 4
SQLLEN Size........: 4
SQLSETPOSIROW Size.: 2
$ cat /usr/local/etc/odbcinst.ini
輸出:
[ms-sql]
Description=TDS connection
Driver=/usr/local/lib/libtdsodbc.so
Setup=/usr/local/lib/libtdsodbc.so
FileUsage=1
UsageCount=1
$ cat /usr/local/etc/odbc.ini
輸出:
[sqlserverdatasource]
Driver = ms-sql
Description = ODBC connection via ms-sql
Trace = No
Server = >IP Addresss To Database server<
Port = >Port Number<
Database = >Database name<
$ cat /etc/freetds.conf
輸出:
[sql-server]
host = >IP Addresss To Database server<
port = >Port Number<
tds version = 8.0
命令這是給我的錯誤:
connection = pyodbc.connect(r'DRIVER={FreeTDS};SERVER=>IP Addresss To Database server<; PORT=>Port Number<;DATABASE=Database name;UID=Database UID;PWD=DatabasePasswd;')
錯誤:
Traceback (most recent call last): File "<stdin>", line 1, in
<module> pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver
Manager]Data source name not found, and no default driver specified
(0) (SQLDriverConnect)')
我試圖解決這個問題的最後3天。但沒有運氣。所以任何幫助/建議都會非常有幫助。 我已經通過Google搜索了。 感謝提前:)
Python中的DRIVER與'odbcinst.ini'中的DRIVER不匹配,並且您沒有在連接字符串中指定TDS版本。解決方案如下。 – FlipperPA
@FlipperPA:謝謝你的回答。對於Driver中的錯別字,我們深表歉意。我修改了大部分內容,忘記修改DRIVER = ms-sql。 –