Azure Functions SQL Binding con Python

Este proyecto es un ejemplo de cómo implementar Azure Functions y la extensión SQL binding extension usando Python y Azure SQL Database. Los tipos de enlaces (bindings) en este ejemplo son:

  • Input Binding: toma un query SQL y un parámetro para ejecutar la consulta y devuelve el resultado en la función.
  • Output Binding: toma una lista de filas y las inserta en una tabla (este ejemplo se probó con Azure SQL Database)

Para obtener más detalles sobre los diferentes tipos de bindings, consulte Bindings Overview.

El proyecto se puede descargar del repositorio de GitHub DFMERA/azure-functions-sql-binding

Prerequisitos

Setup

Instalar «extension bundle»

Puede agregar la versión previa de extension bundle agregando o reemplazando el siguiente código en su archivo host.json

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
    "version": "[4.*, 5.0.0)"
  }
}

Actualizar paquetes

Agregue esta versión de la biblioteca a su proyecto de funciones con una actualización de la línea para azure-functions== en el archivo requirements.txt en su proyecto de Python Azure Functions:

azure-functions==1.11.3b1

Después de configurar la versión de la biblioteca, actualice la configuración de su aplicación para aislar las dependencias agregando PYTHON_ISOLATE_WORKER_DEPENDENCIES con el valor 1 a la configuración de su aplicación. Localmente, esto se establece en el archivo local.settings.json como se ve a continuación:

"PYTHON_ISOLATE_WORKER_DEPENDENCIES": "1"

SQL connection string

Cambie la cadena de conexión SQL en el archivo local.settings.json

"SqlConnectionString": "Server={Azure SQL Server};Initial Catalog={Database name};Persist Security Info=False;User ID={user};Password={password};"

Crear Tabla

En la base de datos, cree una tabla ToDo

CREATE TABLE dbo.ToDo (
    [Id] UNIQUEIDENTIFIER PRIMARY KEY,
    [order] INT NULL,
    [title] NVARCHAR(200) NOT NULL,
    [url] NVARCHAR(200) NOT NULL,
    [completed] BIT NOT NULL
);

Ejecutar el proyecto

HTTP trigger, escribir registros en una tabla

La función HttpSQLApiInsert muestra un SQL output binding declarado en el archivo function.json y una función de Python que agrega registros a una tabla, utilizando los datos proporcionados en una solicitud HTTP POST como un cuerpo JSON.

La siguiente es un SQL output binding en el archivo function.json:

...
{
    "name": "todoItems",
    "type": "sql",
    "direction": "out",
    "commandText": "dbo.ToDo",
    "connectionStringSetting": "SqlConnectionString"
}

Ejecute el proyecto y realice un post request a la función HttpSqlApiInsert, puede usar Postman o el archivo test.http en el proyecto:

POST http://localhost:7071/api/HttpSqlApiInsert
content-type: application/json

[
    {
      "Id": "87de9b48-cdb5-4ca3-bf76-05c4c2a1fe92",
      "order": 1,
      "title": "Have breakfast",
      "url": "none",
      "completed": 0
    }
]

HTTP trigger, obtener varias filas

La función HttpApiSelect muestra un SQL input binding declarado en el archivo function.json y una función de Python que lee una consulta y devuelve los resultados en la respuesta HTTP.

La siguiente es un SQL input binding en el archivo function.json:

...
{
      "name": "todoItems",
      "type": "sql",
      "direction": "in",
      "commandText": "Select * from [dbo].[ToDo] where Id = @Id",
      "commandType": "Text",
      "parameters": "@Id={id}",
      "connectionStringSetting": "SqlConnectionString"
    }

Ejecute el proyecto y realice un get request a la función HttpSqlApiSelect, puede usar Postman o el archivo test.http en el proyecto (recuerde usar el mismo Id que usó para escribir el registro):

GET http://localhost:7071/api/HttpSqlApiSelect
    ?id=87de9b48-cdb5-4ca3-bf76-05c4c2a1fe92
content-type: application/json

Artículos relacionados

DALL-E 2 | ¿Puede una IA hacer el trabajo de un diseñador?

GitHub Copilot | 7 trucos para sacarle máximo provecho

Los comentarios están cerrados.

Blog de WordPress.com.

Subir ↑

A %d blogueros les gusta esto: