2013-07-15 143 views
3

我已正確安裝和配置FreeTDS。因爲這追加到年底我的freetds.conf文件:無法使用pymssql連接到mssql db

[myserver] 
    host = myserver 
    port = 1433 
    tds version = 7.0 

,我還可以運行以下命令,給了我一個SQL提示:

tsql -S myserver -U username 

我的Python腳本是極小的,企圖成功連接到數據庫:

#! /path/to/python/bins 

import pymsql 
conn = pymssql.connect(host='myserver', user='username', password='password', database='database', as_dict=True) 
conn.close() 

但是當我運行它,我收到以下錯誤:

Traceback (most recent call last): 
    File "./test.py", line 5, in <module> 
    conn = pymssql.connect(host='myserver', user='username', password='password', database='database', as_dict=True) 
    File "pymssql.pyx", line 456, in pymssql.connect (pymssql.c:6017) 
pymssql.InterfaceError: Connection to the database failed for an unknown reason. 

這是什麼原因造成的?從我搜索的內容來看,遇到這個問題的大多數人都有freetds.conf文件配置不正確;不過,我可以成功連接(使用tsql)。有誰知道我做錯了什麼,或者我該如何解決這個問題?

回答

3

我剛剛查看了pymssql的代碼,很可能您遇到了MSSQL驅動程序的問題。 https://code.google.com/p/pymssql/source/browse/pymssql.pyx?name=1.9.908#456

嘗試freetds的配置日誌看到「未知原因」:看到http://freetds.schemamania.org/userguide/logging.htmmirror

基本上是:

$ export TDSDUMP=/tmp/freetds.log 
+0

它看起來是不是想我指定的端口上的連接freetds.conf文件:'net.c:210:連接到端口4000(TDS版本5.0)' – EGr

+0

我想通過一種方式獲得連接(儘管我現在正在收到其他錯誤);我只需要在python代碼中指定端口。所以我有'host = myserver'的地方,我會有'host = myserver:port'。雖然我所有的問題都沒有解決,但我所問的是。謝謝! – EGr

+0

我也應該注意到我必須創建下面的env變量:'TDSVER = 8.0' – EGr