簡體   English   中英

無法從Windows上的Python連接到MSSQL Server

[英]Unable to connect to MSSQL Server from Python on Windows

我無法在Windows 10上從Python(3.4.4 64位)連接到SQL Server。這就是我所做的:

  1. 我發現這個漂亮的圖書館。
  2. 然后,我按照這個頁面安裝了FreeTDS
  3. 之后我用這個命令安裝了pymssqleasy_install pymssql
  4. 在SQL Server網絡配置中,我為SQLEXPRESS實例啟用了命名管道和TCP / IP

所以,此時我可以運行SQL Server並使用SQL Server Management Studio連接到我的數據庫。 當我登錄時,我使用DESKTOP-1JA5E9F\\SQLEXPRESS作為服務器名稱, sa作為登錄名,使用123作為密碼。 此外,在Python shell中我可以導入pymssql如:

>>> import pymssql

它不會引起任何錯誤。 但是,我無法連接到我的數據庫實例。 我嘗試了幾十次嘗試:

 conn = pymssql.connect(host=r'DESKTOP-1JA5E9F\SQLEXPRESS', 
                        user=r'sa', password=r'123', database=r'reestr')

上面的代碼^^^永遠不會完成(我看到在shell中只是閃爍_ ,這是永遠閃爍)。 我也試過這個:

conn = pymssql.connect(host=r'SQLEXPRESS', user=r'sa', password=r'123', database=r'reestr')

這會導致pymssql.InterfaceError: Connection to the database failed for an unknown reason. 我試過這個:

conn=pymssql.connect(host=r'SQLEXPRESS:1433',user=r'sa',password=r'123', database=r'reestr')

它還會導致相同的錯誤消息。 所以,如果有人知道那些可以做到這一點的神奇伏都教法術,我們歡迎你。

根據文檔 ,不再有host關鍵字arg,而是server 它也應該是服務器名稱,而不是實例名稱,或者是完整的實例名稱(帶有服務器名稱)。 請參閱connect()描述以及Connection類的名稱構造示例

在您的情況下,服務器名稱也是DESKTOP-1JA5E9F . (local)應該工作,因為你在本地機器上完成所有工作; 您的命名實例名稱是SQLEXPRESS

嘗試這樣:

import pymssql

#for instance with known name 'SQLEXPRESS'
conn = pymssql.connect(server=r'DESKTOP-1JA5E9F\SQLEXPRESS', 
                       user=r'sa', password=r'123', database=r'reestr')
#on localhost this should work too
conn = pymssql.connect(server=r'.\SQLEXPRESS', 
                       user=r'sa', password=r'123', database=r'reestr')

#for default instance with port taken from freetds.conf
#(this probably won't work for your case, because you use named instance
#instead of default instance, which is named MSSQLSERVER)
conn = pymssql.connect(server=r'DESKTOP-1JA5E9F', user=r'sa', password=r'123',    
                       database=r'reestr')

#for instance on known port '1433'
conn = pymssql.connect(server=r'DESKTOP-1JA5E9F:1433', user=r'sa', password=r'123',
                       database=r'reestr')

如果這沒有幫助,請按照文檔中的描述測試與tsql的連接,例如:

tsql -H DESKTOP-1JA5E9F -p 1433 -U sa -P 123 -D reestr

或者如果你有freetds.conf

tsql -S 'DESKTOP-1JA5E9F\SQLEXPRESS' -U sa -P 123 -D reestr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM