web-dev-qa-db-ja.com

Windows認証を使用してsqlalchemy経由でSQL Serverに接続するにはどうすればよいですか?

python用のdb接続モジュールであるsqlalchemyは、デフォルトでSQL認証(データベース定義のユーザーアカウント)を使用します。 Windows(ドメインまたはローカル)の資格情報を使用してSQL Serverの認証を行う場合は、接続文字列を変更する必要があります。

デフォルトでは、sqlalchemyで定義されているように、SQL Serverに接続するための接続文字列は次のとおりです。

sqlalchemy.create_engine('mssql://*username*:*password*@*server_name*/*database_name*')

これは、Windows資格情報を使用して使用すると、次のようなエラーがスローされます。

sqlalchemy.exc.DBAPIError: (Error) ('28000', "[28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for us
er '***S\\username'. (18456) (SQLDriverConnect); [28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for us
er '***S\\username'. (18456)") None None

このエラーメッセージで、コード18456は、SQL Server自体によってスローされたエラーメッセージを識別します。このエラーは、資格情報が正しくないことを示しています。

26
vbiqvitovs

SqlalchemyおよびmssqlでWindows認証を使用するには、次の接続文字列が必要です。

OBDCドライバー:

engine = sqlalchemy.create_engine('mssql://*server_name*/*database_name*?trusted_connection=yes')

SQL Expressインスタンス:

engine = sqlalchemy.create_engine('mssql://*server_name*\\SQLEXPRESS/*database_name*?trusted_connection=yes') 
32
vbiqvitovs

pyodbc

私はあなたが置く必要があると思う:

mssqlの後の「+ pyodbc」

これを試して:

from sqlalchemy import create_engine

engine = create_engine("mssql+pyodbc://user:password@Host:port/databasename?driver=ODBC+Driver+17+for+SQL+Server")

cnxn = engine.connect()

わたしにはできる

幸運!

0
Rodrigo Peña