Sqlalchemy连接到Microsoft Azure Active directory密码

2024-10-06 12:17:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用bflow代码通过sqlalchemy连接到mssql,现在它已经迁移到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通过以下方式实现连接

enter link description here

请引导


Tags: 代码importeventstringsqlalchemycreateconnectioncursor
1条回答
网友
1楼 · 发布于 2024-10-06 12:17:51

我尝试了此代码并使用Active directory密码成功连接到我的Azure SQL数据库。在

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替换为您的广告帐户。在

有关详细信息,请参阅本文档:Connecting to PyODBC。在

我的python版本是python3.7.3。在

希望这有帮助。在

相关问题 更多 >