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.
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')
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!