Как подключиться к SQL Server через sqlalchemy с помощью проверки подлинности Windows?

sqlalchemy, модуль подключения db для Python, по умолчанию использует аутентификацию 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. Эта ошибка означает, что учетные данные неверны.

Ответ 1

Чтобы использовать проверку подлинности Windows с sqlalchemy и mssql, требуется следующая строка подключения:

Драйвер ODBC:

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

Ответ 2

pyodbc

Я думаю, что вам нужно поставить:

"+pyodbc" после mssql

попробуй это:

from sqlalchemy import create_engine

engine = create_engine("mssql+pyodbc://user:[email protected]:port/databasename?driver=ODBC+Driver+17+for+SQL+Server")

cnxn = engine.connect()

Меня устраивает

Удача!