December 29, 2023

Python: подключение к MS SQL с использованием библиотеки SQLAlchemy и аутентификации NTLM

Для подключения к MS SQL с использованием библиотеки SQLAlchemy и аутентификации NTLM, вы можете воспользоваться библиотекой pyodbc вместе с sqlalchemy и pyodbc:

from sqlalchemy import create_engine
from sqlalchemy import MetaData, Table

# Укажите свои параметры подключения
server = 'your_server_name'
database = 'your_database_name'
username = 'your_username'
password = 'your_password'

# Создайте строку подключения с использованием NTLM аутентификации
connection_string = f'mssql+pyodbc://{username}:{password}@{server}/{database}?driver=ODBC+Driver+17+for+SQL+Server&authentication=NTLM'

# Создайте движок SQLAlchemy
engine = create_engine(connection_string, echo=True)

# Создайте метаданные SQLAlchemy
metadata = MetaData()

# Пример выполнения SQL-запроса
# Замените 'your_table_name' на имя вашей таблицы
your_table = Table('your_table_name', metadata, autoload_with=engine)

# Ваш SQL-запрос
query = your_table.select()

# Выполнение запроса
result = engine.execute(query)

# Вывод результатов
for row in result:
    print(row)

# Закрытие соединения
engine.dispose()

Обратите внимание, что вы должны заменить 'your_server_name', 'your_database_name', 'your_username', и 'your_password' на свои реальные данные подключения. Также, убедитесь, что у вас установлены библиотеки pyodbc, sqlalchemy и pandas:

pip install pyodbc sqlalchemy pandas

Аунтентификация без логина и пароля

Если вы хотите использовать NTLM аутентификацию без явного указания логина и пароля, вы можете использовать Windows Integrated Authentication. В этом случае, библиотека pyodbc будет использовать учетные данные текущего пользователя Windows. Вот обновленный код:

from sqlalchemy import create_engine
from sqlalchemy import MetaData, Table

# Укажите свои параметры подключения
server = 'your_server_name'
database = 'your_database_name'

# Создайте строку подключения с использованием Windows Integrated Authentication (NTLM)
connection_string = f'mssql+pyodbc://{server}/{database}?driver=ODBC+Driver+17+for+SQL+Server&authentication=NTLM'

# Создайте движок SQLAlchemy
engine = create_engine(connection_string, echo=True)

# Создайте метаданные SQLAlchemy
metadata = MetaData()

# Пример выполнения SQL-запроса
# Замените 'your_table_name' на имя вашей таблицы
your_table = Table('your_table_name', metadata, autoload_with=engine)

# Ваш SQL-запрос
query = your_table.select()

# Выполнение запроса
result = engine.execute(query)

# Вывод результатов
for row in result:
    print(row)

# Закрытие соединения
engine.dispose()

В этом коде логин и пароль не указаны явно в строке подключения. Вместо этого используется Windows Integrated Authentication (NTLM), и библиотека pyodbc использует учетные данные текущего пользователя Windows для аутентификации. Пожалуйста, замените 'your_server_name', 'your_database_name', и 'your_table_name' на свои реальные данные.