我正在尝试使用Azure datapreb库将Azure SQL数据库与Azure AD服务主体连接起来。你知道吗
请检查以下代码:-
import logging
import struct
from . import hy_param
import azureml.dataprep as dprep
import azure.functions as func
import adal
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
try:
SQL_COPT_SS_ACCESS_TOKEN = 1256
# connection string for database connection without username and password
connection_string = "Driver=" + hy_param.sql_driver + ';SERVER=' + hy_param.server_name + ';DATABASE=' + hy_param.database_name
token = get_token()
conn = dprep.MSSQLDataSource(connection_string, attrs_before = { SQL_COPT_SS_ACCESS_TOKEN:token})
logging.info("Connection is : ",conn)
cursor = conn.cursor()
# # Read data from table
cursor.execute("SELECT GETDATE()")
row = cursor.fetchone()
return func.HttpResponse(f"Created :- {row}",
status_code=200
)
except Exception as e:
return func.HttpResponse(f"Error in sql database connection : {e}", status_code=400)
def get_token():
# get token using the Azure AD Service Principals
authority_url = (hy_param.login_url + '/' + hy_param.tenant_id)
context = adal.AuthenticationContext(authority_url, api_version=None)
access_token = context.acquire_token_with_client_credentials(hy_param.resource_url, hy_param.client_id, hy_param.client_secret)
converted_token = bytes(access_token["accessToken"], "UTF-8")
operated_token = b''
for each_token_data in converted_token:
operated_token += bytes({each_token_data})
operated_token += bytes(1)
token_data = struct.pack("=i", len(operated_token)) + operated_token
return token_data
请检查以下错误:-
Error in sql database connection : __init__() got an unexpected keyword argument 'attrs_before'
有没有办法解决上述问题?我想使用带有Azure AD服务主体的Datapreb库访问Azure SQL DB。
我在Pyodb库上试过,效果不错,但在datapreb库上没有。你知道吗
错误是说这行它不满意并且不识别这个参数。您使用的库的版本是什么?它是否可能不接受名为this或renamed(attrs\u before)的参数?你知道吗
conn = dprep.MSSQLDataSource(connection_string, attrs_before = { SQL_COPT_SS_ACCESS_TOKEN:token})
相关问题 更多 >
编程相关推荐