2015-12-08 79 views
3

我想使用pymssql創建到SQL Server數據庫的可信連接。鑑於該代碼將被共享,我不希望用戶輸入他們的用戶名或密碼。我發現有關如何實現這一點的信息存在衝突的文檔。使用SQLAlchemy和pymssql進行Windows身份驗證

我希望能夠做的是一樣的東西

engine = create_engine('mssql+pymssql://<Server>/<Database>?trusted=True') 

有些事情說使用 trusted_connection=yes,別人說trusted=True。這些選項都不適合我。每次嘗試使用引擎時,我都會收到一個錯誤消息,說明trustedtrusted_connection是一個意外的關鍵字參數。

我正在使用SQLAlchemy版本1.0.9和pymssql版本2.1.1。

回答

0

如果有其他人絆倒了這一個:
似乎它不再可能使用「可信」或Windows身份驗證與pymssql。

我剛剛嘗試了這一點,並發現了一堆線程與過去幾年令人沮喪的用戶。例如, pymssql windows authentication

編輯: 啓用TCP解決後/ IP的本地SQL Server Express

+0

自從寫這些評論以來,事情可能已經發生了變化,但是當我剛剛測試它時,它對我很有用。詳情請參閱我的回答。 –

+0

我試過按照你的方法,但我不能得到它的工作。儘管我沒有使用SQLAlchemy。例如: conn = pymssql.connect(server ='localhost',database ='TestDB') – Jens

+0

我剛測試過'cnxn = pymssql.connect(server ='localhost',port ='52865',database ='myDb') '它適用於Python 3.5.1和pymssql 2.1.2。 –

3

我只是

  • Python的2.7.11,SQLAlchemy的1.0.11和pymssql測試這在Windows機器上2.1.1,並
  • 的Python 3.5.1,SQLAlchemy的1.0.14和2.1.2 pymssql(與freetds的0.95.83的DLL)

,它爲我工作得很好:

from sqlalchemy import create_engine 
conn_str = r'mssql+pymssql://(local)\SQLEXPRESS/myDb' 
engine = create_engine(conn_str) 
connection = engine.connect() 
result = connection.execute("SELECT SYSTEM_USER AS me") 
row = result.fetchone() 
print(row['me']) 

而且,即使在SQL Browser服務已停止在該計算機上,此連接字符串工作

conn_str = r'mssql+pymssql://localhost:52865/myDb' 

所以,至少在Windows機器上,只是省略了用戶名和密碼,將允許通過Windows身份驗證連接到SQL Server。

相關問題