web-dev-qa-db-fra.com

Comment se connecter à SQL Server via sqlalchemy à l'aide de l'authentification Windows?

sqlalchemy, un module de connexion db pour Python, utilise l'authentification SQL (comptes d'utilisateurs définis par la base de données) par défaut. Si vous souhaitez utiliser vos informations d'identification Windows (domaine ou local) pour vous authentifier auprès de SQL Server, la chaîne de connexion doit être modifiée.

Par défaut, tel que défini par sqlalchemy, la chaîne de connexion pour se connecter à SQL Server est la suivante:

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

Cela, s'il est utilisé à l'aide de vos informations d'identification Windows, génère une erreur similaire à celle-ci:

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

Dans ce message d'erreur, le code 18456 identifie le message d'erreur généré par le serveur SQL lui-même. Cette erreur signifie que les informations d'identification sont incorrectes.

26
vbiqvitovs

Pour utiliser l'authentification Windows avec sqlalchemy et mssql, la chaîne de connexion suivante est requise:

Pilote OBDC:

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

Instance SQL Express:

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

pyodbc

Je pense que vous devez mettre:

"+ pyodbc" après mssql

essaye ça:

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()

Ça marche pour moi

La chance!

0
Rodrigo Peña