使用 IAM 身份验证和访问令牌与基于云的 SQL 服务器的 Python 连接

问题描述 投票:0回答:1

我正在尝试使用 Python 连接到我们基于云的 SQL 服务器数据库。如何将 ODBC 驱动程序名称、IAM 身份验证和访问令牌信息传递给 pyodbc 或 mssql 连接器?如果用 pyodbc 和 mssql 无法完成,SQLAlchemy 可以作为解决方案吗?

我尝试使用 pyodbc,当我提供 DSN 时它可以工作。我在本地(在我的桌面上)运行代码,Python 查找 DSN 详细信息所在的 Windows 注册表。但是,当我在代码存储库文件中在线使用相同的代码时,它不起作用,因为它无法访问我的本地注册表。

python sql-server access-token pyodbc identity-management
1个回答
0
投票

以下是如何使用访问令牌进行连接:

def get_conn():
    credential = identity.DefaultAzureCredential(exclude_interactive_browser_credential=False)
    token_bytes = credential.get_token("https://database.windows.net/.default").token.encode("UTF-16-LE")
    token_struct = struct.pack(f'<I{len(token_bytes)}s', len(token_bytes), token_bytes)
    SQL_COPT_SS_ACCESS_TOKEN = 1256  # This connection option is defined by microsoft in msodbcsql.h
    conn = pyodbc.connect(connection_string, attrs_before={SQL_COPT_SS_ACCESS_TOKEN: token_struct})
    return conn

使用 Python 和 pyodbc 驱动程序连接并查询 Azure SQL 数据库

© www.soinside.com 2019 - 2024. All rights reserved.