未找到Azure函数linux

rlcwz9us  于 2023-04-29  发布在  Linux
关注(0)|答案(1)|浏览(118)

我正在从azure devops管道部署一个python函数,我没有门户访问权限,也没有ssh访问azure函数linux worker。azure函数使用托管标识连接到SQL数据库。我得到了上面的错误。

'''Connect to Azure SQL DB'''
credential = DefaultAzureCredential() # system-assigned identity
# Get token for Azure SQL Database and convert to UTF-16-LE for SQL Server driver
token = credential.get_token("https://database.windows.net/.default").token.encode("UTF-16-LE")
token_struct = struct.pack(f'<I{len(token)}s', len(token), token)
# Connect with the token            
SQL_COPT_SS_ACCESS_TOKEN = 1256
conn_string = f"Driver={{ODBC Driver 17 for SQL Server}};SERVER=sql-to-dev-qasecgate.database.windows.net;DATABASE=QASecurityGatepoc"
database_conn = pyodbc.connect(conn_string, attrs_before={SQL_COPT_SS_ACCESS_TOKEN: token_struct})            
database_cursor = database_conn.cursor()
return database_conn, database_cursor

This github线程已将问题标记为已关闭,但显然问题尚未解决。一个用户提到使用pypyodbc而不是pyodbc。我试过了,但是我无法使用Azure SQL DB进行身份验证。我找不到使用pypyodbc为上述场景执行此操作的代码。
我不能使用Docker。
我记得在早些时候处理这个问题时也遇到过同样的问题,但当时我有ssh访问权限。我记得手动下载ODBC驱动程序并复制文件,可能是.ini文件?到某个目录才能使其工作。我现在不记得这些信息了,也不知道如何从管道任务(不是YAML)中完成这些。

wmvff8tz

wmvff8tz1#

如果您想使用pypyodbc从Azure python函数应用程序使用托管身份连接到Azure SQL DB,请使用此代码。找不到pyodbc Module not found错误的解决方案。

import pypyodbc

server = '<your_server_name>.database.windows.net'
database = '<your_database_name>'
driver = '{ODBC Driver 17 for SQL Server}'
auth = 'ActiveDirectoryMsi'

connection_string = (
    'DRIVER=' + driver + ';'
    'Server=' + server + ';'
    'Database=' + database + ';'
    'Authentication=' + auth + ';'
)

cnxn = pypyodbc.connect(connection_string)

print("Connected")

相关问题