gpt4 book ai didi

python - 如何在azure函数中使用SQL更新查询Python中的SQL输出绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 02:00:02 25 4
gpt4 key购买 nike

我刚刚开始使用 Python 中的 Azure 函数,对此我还很陌生。我的应用程序的目标是运行复杂的模型并将结果写入现有连接的 Azure SQL 数据库中的新列。每个结果对应于“MyID”列中列出的唯一案例,应添加到正确的行。

我的数据库表列看起来像这样:

MyID,  A,   B,   C

我的代码计算需要写入“C”列的值。

我成功将 Azure SQL 数据库连接到 azure 函数,并且能够使用 function.json 文件中的 azure 输入 SQL 绑定(bind)从数据库表中读取所有数据。

我还能够使用 azure SQL 输出绑定(bind)将新行写入现有表。

但是,我不知道如何以这种方式将数据写入指定行的特定列。我想要执行的普通 SQL 查询如下所示:

"UPDATE dbo.MyTable SET C = result_C WHERE MyID = result_myID"

这里,result_C是我的模型计算的结果,result_myID是结果对应的case。

我的 function.json 中的正常绑定(bind)如下所示:

{
"name": "results",
"type": "sql",
"direction": "out",
"commandText": "dbo.MyTable",
"connectionStringSetting": "SqlConnectionString"
}

在我能找到的所有其他示例中,输出绑定(bind)中仅指定了表名称。那么如何使用更新查询呢?像这样的东西:

{
"name": "results",
"type": "sql",
"direction": "out",
"commandText": "update dbo.MyTable set [C] where [MyID] = result_myID",
"commandType": "Text",
"connectionStringSetting": "SqlConnectionString"
}

这毫不奇怪是行不通的。首先也是最重要的,因为我现在不知道如何将“result_myID”的当前值传递给 function.json。另外,我不确定是否可以以这种方式使用“commandText”进行输出绑定(bind)。

那么查询应该在 python 文件中进行吗?通常它看起来像:

import azure.functions as func

def main(additional_input, results: func.Out[func.SqlRow]):

\\calculations->outcome\\

results.set(func.SqlRowList(outcome))

return()

不幸的是,我不知道如何或在哪里实现上面代码中的 sql 更新查询语句。

是否可以使用 SQL 连接函数来实现此目的?或者我应该在 python 文件中使用 pyodbc python 包来手动连接到数据库而不用担心绑定(bind)?

任何帮助或指示将不胜感激!

最佳答案

为了通过 Azure Python 函数在 azure SQL 中运行 UPDATE 语句,您可以将 Pyodbc 模块与 SQL Server ODBC 驱动程序结合使用 [驱动程序版本 17 或 18]安装在您的本地系统中。

您可以从此 link 安装 SQL Server 的 ODBC 驱动程序 17

我的 init.py:-

import logging
from multiprocessing import connection
import pyodbc
import os
import azure.functions as func


def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')

connectionstring = os.environ["connectionstring"]
conn = pyodbc.connect(connectionstring)
cursor = conn.cursor()

cursor.execute("UPDATE OnlineCourses SET Title = 'Azure-9001' , Topic = 'Azure12' where CourseID = 1")
conn.commit()

conn.commit()
cursor.close()
conn.close()


# Prepare & Return the HTTP Response
return func.HttpResponse(
body="Your request is processed",
status_code=202
)

我的 local.settings.json 包含到我的 Azure SQL 的连接字符串:-

您可以从连接字符串部分找到Azure SQL的连接字符串,如下所示:-

enter image description here

确保您的连接字符串与我在下面提到的 SQL Server 主机名、数据库名称以及用户名和密码的格式相同:-

{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=valleystrg54;AccountKey=xxxxxxq+AStHLzSmA==;EndpointSuffix=core.windows.net",
"FUNCTIONS_WORKER_RUNTIME": "python",
"connectionstring" : "DRIVER={ODBC Driver 17 for SQL Server};SERVER=tcp:siliconserver.database.windows.net;PORT=1433;DATABASE=silicondb;UID=username;PWD=Password"
}
}

Function.json:-

enter image description here

enter image description here

Azure SQL 行已更新,请参阅以下内容:-

enter image description here

关于python - 如何在azure函数中使用SQL更新查询Python中的SQL输出绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76637547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com