Sqlalchemy - подключение к Microsoft Azure - пароль Active Directory - PullRequest
0 голосов
/ 13 июня 2019

Я подключался к MS SQL с помощью sqlalchemy, используя код bwlow, и теперь он был перенесен в облако Azure.Я попытался изменить код значений, но я думаю, что это не правильный способ подключения ActiveDirectoryPassword

    import sqlalchemy
        from sqlalchemy import event, create_engine
# OLD connection string 
        engine = sqlalchemy.create_engine("mssql+pyodbc://" + "username" + ":" + "passkey" + "@" + "server" + "/" + "Database" + "?driver=SQL+Server"

        @event.listens_for(engine, 'before_cursor_execute')
        def receive_before_cursor_execute(conn, cursor, statement, params, context, executemany):
            if executemany:
                cursor.fast_executemany = True
                cursor.commit()

    # New connection string (for Active directory connection - not working)
    engine = sqlalchemy.create_engine("mssql+pyodbc://" + "abc@domain.com" + ":" + "passkey" + "@" + "xxxx-svsql1.database.windows.net" + "/" + "Database" + "?driver=SQL+Server" + "Authentication=ActiveDirectoryPassword")

Обратите внимание, что я смог успешно подключиться с помощью pyodbc, но не смог сделать это с помощью sqlalchemy, выполнив

введите описание ссылки здесь

Пожалуйста, руководство

1 Ответ

1 голос
/ 14 июня 2019

Я попробовал этот код и успешно подключился к базе данных SQL Azure SQL с паролем Active Directory.

import sqlalchemy
import urllib
import pyodbc
from sqlalchemy import event

params = urllib.parse.quote_plus("Driver={ODBC Driver 17 for SQL Server};Server=tcp:***.database.windows.net,1433;DATABASE=db_name;UID=***@***.com;PWD=***;Authentication=ActiveDirectoryPassword")
engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)

@event.listens_for(engine, 'before_cursor_execute')
def receive_before_cursor_execute(conn, cursor, statement, params, context, executemany):
       if executemany:
            cursor.fast_executemany = True
            cursor.commit()

conn=engine.connect()
print(conn)

Замените UID своей учетной записью AD.

Для получения более подробной информации, пожалуйста,см. этот документ: Подключение к PyODBC .

Моя версия Python - Python 3.7.3.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...