使用 python 触发器将 Azure 函数应用程序连接到 Azure VM 中的 SQL Server 数据库

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

我们在 Azure VM 上设置了 SQL Server 数据库。我们正在尝试使用 Python timerTrigger 创建一个 Azure Function App,它将进行 API 调用并将其结果存储到我们的数据库中。

能够通过 Azure 函数成功调用 API 并读取数据,但在写入数据库时出现问题。

错误片段:

Result: Failure Exception: OperationalError: ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)') Stack: File "/azure-functions-host/workers/python/3.9/LINUX/X64/azure_functions_worker/dispatcher.py", line 357, in _handle__function_load_request func = loader.load_function( File "/azure-functions-host/workers/python/3.9/LINUX/X64/azure_functions_worker/utils/wrappers.py", line 44, in call return func(*args, **kwargs) File "/azure-functions-host/workers/python/3.9/LINUX/X64/azure_functions_worker/loader.py", line 132, in load_function mod = importlib.import_module(fullmodname) File "/usr/local/lib/python3.9/importlib/__init__.py",

代码片段:

导入pyodbc def main(mytimer: func.TimerRequest) -> 无:

cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};Server=<HOSTNAME/IP>;Database=<DB NAME>;UID=<USERNAME>;PWD=<PASSWORD>;Trusted_Connection=yes;')

# also tried with this:
#cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=<HOSTNAME/IP>;DATABASE=<DB NAME>;Trusted_Connection=yes;')

cursor = cnxn.cursor()

sel = ("SELECT top 2 * FROM schema.our_table;")
cursor.execute(sel)

for row in cursor.fetchall():
        print(row)

在设置了 DB 的 Azure VM 中从 pycharm 运行时,我可以运行相同的代码并获得结果,但是当通过 Azure Function 运行时,它一直失败并出现错误:登录超时已过期 (0)

在设置了 DB 的 Azure VM 中从 pycharm 运行时,我可以运行相同的代码并获得结果,但是当通过 Azure Function 运行时,它一直失败并出现错误:登录超时已过期 (0)

python sql-server azure-functions pyodbc azure-virtual-machine
1个回答
0
投票

问题得到解决,因为存在一些 IP 地址问题。更改 IP 地址后,我能够查询数据库。

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