我想通过Python使用Azure服务主体连接Azure SQL数据库。请帮帮我我可以使用服务主体通过ADF连接它
0sgqnhkj1#
有一个连接sql server的库Microsoft Azure Active Directory Authentication Library (ADAL) for Python,你可以从这里得到它。在wiki文档中,你可以找到关于connecting to Azure SQL Database的教程。你也可以参考这个article,它有连接服务器的详细步骤。
Microsoft Azure Active Directory Authentication Library (ADAL) for Python
oymdgrw72#
我花了一些时间才弄明白这一点,所以我将在这里留下一些代码示例,以防对某些人有所帮助。在我的例子中,我必须从Databricks连接到Synapse SQL Serverless。之前,我使用以下脚本安装了驱动程序"msodbcsql17":
%sh #!/bin/bash apt install unixodbc-dev curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list apt-get update ACCEPT_EULA=Y apt-get install -y msodbcsql17
然后:1.获取令牌:
from msal import ConfidentialClientApplication creds = ConfidentialClientApplication( client_id='<your_client_id>', authority='https://login.microsoftonline.com/<your_tenant_id>', client_credential= 'your_secret') token = creds.acquire_token_for_client(scopes='https://database.windows.net//.default')
1.编码令牌(更多信息,请访问:https://www.linkedin.com/pulse/using-azure-ad-service-principals-connect-sql-from-python-andrade/):
import struct SQL_COPT_SS_ACCESS_TOKEN = 1256 tokenb = bytes(token["access_token"], "UTF-8") exptoken = b''; for i in tokenb: exptoken += bytes({i}); exptoken += bytes(1); tokenstruct = struct.pack("=i", len(exptoken)) + exptoken;
1.在pyodbc中,使用标记打开到数据库的连接并执行SQL语句:
import pyodbc connString = 'DRIVER={ODBC Driver 17 for SQL Server};' \ + 'SERVER=<your_server>;' \ + 'DATABASE=<your_database>;' conn = pyodbc.connect(connString, attrs_before = { SQL_COPT_SS_ACCESS_TOKEN:tokenstruct}); cursor = conn.cursor() query="select name from sys.databases" cursor.execute(query) row = cursor.fetchall()
xdnvmnnf3#
看看这个教程:Lesson Learned #49: Does Azure SQL Database support Azure Active Directory connections using Service Principals?本教程教我们使用Azure服务原理通过AAD连接Azure SQL数据库,并提供了Powershell和C#的示例代码。我没有找到Python中的示例代码,我想这个教程可能对你有帮助,所以我想与你分享。希望这个有用。
3条答案
按热度按时间0sgqnhkj1#
有一个连接sql server的库
Microsoft Azure Active Directory Authentication Library (ADAL) for Python
,你可以从这里得到它。在wiki文档中,你可以找到关于connecting to Azure SQL Database的教程。
你也可以参考这个article,它有连接服务器的详细步骤。
oymdgrw72#
我花了一些时间才弄明白这一点,所以我将在这里留下一些代码示例,以防对某些人有所帮助。
在我的例子中,我必须从Databricks连接到Synapse SQL Serverless。之前,我使用以下脚本安装了驱动程序"msodbcsql17":
然后:
1.获取令牌:
1.编码令牌(更多信息,请访问:https://www.linkedin.com/pulse/using-azure-ad-service-principals-connect-sql-from-python-andrade/):
1.在pyodbc中,使用标记打开到数据库的连接并执行SQL语句:
xdnvmnnf3#
看看这个教程:Lesson Learned #49: Does Azure SQL Database support Azure Active Directory connections using Service Principals?
本教程教我们使用Azure服务原理通过AAD连接Azure SQL数据库,并提供了Powershell和C#的示例代码。
我没有找到Python中的示例代码,我想这个教程可能对你有帮助,所以我想与你分享。
希望这个有用。