2016-08-17 64 views
1

我使用的是Python的MacOS系統安裝而不是virtualenv。在這我已經安裝了freetds和pymssql 2.1。該連接細使用數據庫:使用pymssql 2.2不連接到SQL服務器

pymssql.connect(server='the.host.name\instance', user='username' etc . .). 

意識到的virtualenv是做的東西我創建了一個基於2.7蟒蛇虛擬env和試圖點子安裝pymssql但得到一個錯誤信息的正確方法。快速狩獵發現修復 - 即從混帳與安裝:

pip install git+https://github.com/pymssql/pymssql.git 

但現在我的連接調用返回一個主機不響應錯誤。我用tsql來調試(TDSDUMP = stdout),它看起來像地址\實例導致了一個問題。連接到有地址但沒有實例的數據庫工作正常

當我恢復到我的系統範圍安裝並運行它時,我看到freetds將數據庫實例的端口號解析爲特定端口(portNo)。

在我的virtualenv下,如果我使用此端口號對pymssql進行調用,那麼我的連接就沒有問題。

pymssql.connect(server='the.host.name\instance', user='username', port='portNo', etc . . .) 

雖然這個解決方案的工作 - 我猜測,服務器上的任何更改可能會打破它。

任何想法爲什麼我的pymssql調用在這些情況下失敗?

回答

0

顯式優於隱式。最好總是包含端口號碼(至少我是這樣做的)。

0

查看以下兩個項目:

  • 確保pymssql(全球一個和你的virtualenv內獲得一個)的兩個installatons是針對同一FeeeTDS版本實際上鍊接。可能你安裝了多個FreeTDS版本,這就是你看到不同行爲的原因。
  • 服務器參數含有字符\,請確保您無論是雙引號它('the.host.name\\instance'),或使用原始字符串符號(r'the.host.name\instance')。這是標準的Python開發實踐。