pymssql登陸本地sql server 伺服器

bazingaedward發表於2016-01-18

編譯環境

名稱 備註
本地sql server伺服器 sql server 2014 Express
pymssql pymssql 2.1.1,通過pip install 安裝
python編譯器 pycharm 5.0 community

除錯流程

1.呼叫sql server management studio(以下簡稱ssms)監測是否可以連結,發現沒問題;
2.編寫python測試程式碼

import pymssql
connect = pymssql.connect(host='DESKTOP-16D8IE2\SQLEXPRESS', user = 'sa', password ='****', database='****')

其中host放的是第一步ssms中的伺服器名稱,除錯報錯:

Traceback (most recent call last):
  File "E:/��������/2015/��ģʽ����/Code/test/test.py", line 3, in <module>
    connect = pymssql.connect(host='DESKTOP-16D8IE2\SQLEXPRESS', user = 'sa', password ='Chinkun65613303', database='tsqx')#127.0.0.1:2301
  File "pymssql.pyx", line 639, in pymssql.connect (pymssql.c:10246)
pymssql.InterfaceError: Connection to the database failed for an unknown reason.

3.搜google,各種原因解釋:

原因 備註
字符集設定,就是在pymssql.connect()中新增例如“charset=”UTF-8””之類 試了下,並沒什麼效果
字串改用raw,host=r’Desk**’ 沒用
官網上和一些stackoverflow上提到的freetds的配置問題freetds下載測試 後來自己安裝了windows下的freetds,沒找到配置檔案freetds.conf,猜測pymssql的windows版已經應該已經整合了freetds,不需要另外再裝,後面的結果也證實了這點

4.freetds發現埠問題
安裝完freetds後輸入

tsql -H DESKTOP-16D8IE2\SQLEXPRESS -p 1433 -U sa -P **** -D ****

系統報錯:

locale is "Chinese (Simplified)_China.936"
locale charset is "GBK"
using default charset "UTF-8"
Setting tsqx as default database in login packet
Msg 18456 (severity 14, state 1) from DESKTOP-16D8IE2 Line 1:
        "鐢ㄦ埛 'sa' 鐧誨綍澶辮觸銆?
Error 20002 (severity 9):
        Adaptive Server connection failed
There was a problem connecting to the server

google後發現是埠問題,在sql server 配置管理器中配置TCP/IP的埠後tsql可以正常登陸。

解決方案

1.開啟sql server 配置管理器,在SQL SERVER 網路配置-》SQLEXPRESS協議-》TCP/IP設定為啟動,
在IP位址列最下方有個IPALL選項,清空TCP動態埠,設定下面的TCP埠為任一合理值,這裡設為2301,
儲存後重啟sql server 服務(smss中可以重啟)

2.實現程式碼

import pymssql
connect = pymssql.connect(host='127.0.0.1:2301', user = 'sa', password ='****', database='****')

相關文章