我们在 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)
问题得到解决,因为存在一些 IP 地址问题。更改 IP 地址后,我能够查询数据库。