Compartir a través de


Enlace de entrada de Azure Database for MySQL para Azure Functions

Cuando se ejecuta una función, el enlace de entrada de Azure Database for MySQL recupera datos de una base de datos y los pasa al parámetro de entrada de la función.

Para obtener información sobre la configuración y la configuración, consulte la información general.

Importante

En este artículo se usan pestañas para admitir varias versiones del modelo de programación de Node.js. El modelo v4 está disponible de forma general y está diseñado para que los desarrolladores de JavaScript y TypeScript tengan una experiencia más flexible e intuitiva. Para más detalles acerca de cómo funciona el modelo v4, consulte la Guía para desarrolladores de Node.js de Azure Functions. Para obtener más información sobre las diferencias entre v3 y v4, consulte la Guía de migración.

Ejemplos

Puede crear una función de C# mediante uno de los siguientes modos de C#:

  • Modelo de trabajo aislado: función compilada en C# que se ejecuta en un proceso trabajador aislado del tiempo de ejecución. Se requiere un proceso de trabajo aislado para admitir funciones de C# que se ejecutan en versiones de soporte técnico a largo plazo (LTS) y no LTS para .NET y .NET Framework.
  • Modelo en proceso: función de C# compilada que se ejecuta en el mismo proceso que el tiempo de ejecución de Azure Functions.
  • Script de C#: se usa principalmente al crear funciones de C# en Azure Portal.

Hay más ejemplos para el enlace de entrada de Azure Database for MySQL en el repositorio de GitHub.

En esta sección se incluyen los ejemplos siguientes:

En este ejemplo se hace referencia a una clase Product y una tabla de base de datos correspondiente:

namespace AzureMySqlSamples.Common
{
    public class Product
    {
        public int? ProductId { get; set; }

        public string Name { get; set; }

        public int Cost { get; set; }

        public override bool Equals(object obj)
    }
}
DROP TABLE IF EXISTS Products;

CREATE TABLE Products (
  ProductId int PRIMARY KEY,
  Name varchar(100) NULL,
  Cost int NULL
);

Desencadenador HTTP, obtener una fila por identificador de una cadena de consulta

En el ejemplo siguiente se muestra una función de C# que recupera un registro individual. La función se desencadena mediante una solicitud HTTP que usa una cadena de consulta para especificar el identificador. Ese identificador se usa para recuperar un registro Product con la consulta especificada.

Nota

El parámetro de la cadena de consulta HTTP distingue mayúsculas de minúsculas.

using System.Collections.Generic;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.MySql;
using Microsoft.Azure.Functions.Worker.Http;
using AzureMySqlSamples.Common;

namespace AzureMySqlSamples.InputBindingIsolatedSamples
{
    public static class GetProductById
    {
        [Function(nameof(GetProductById))]
        public static IEnumerable<Product> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "getproducts/{productId}")]
            HttpRequestData req,
            [MySqlInput("select * from Products where ProductId = @productId",
                "MySqlConnectionString",
                parameters: "@ProductId={productId}")]
            IEnumerable<Product> products)
        {
            return products;
        }
    }
}

Desencadenador HTTP, obtener varias filas de un parámetro de ruta

En el ejemplo siguiente se muestra una función de C# que recupera las filas devueltas por la consulta. La función se desencadena mediante una solicitud HTTP que usa datos de ruta para especificar el valor de un parámetro de consulta. Ese parámetro se usa para filtrar los registros Product de la consulta especificada.

using System.Collections.Generic;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.MySql;
using Microsoft.Azure.Functions.Worker.Http;
using AzureMySqlSamples.Common;

namespace AzureMySqlSamples.InputBindingIsolatedSamples
{
    public static class GetProducts
    {
        [Function(nameof(GetProducts))]
        public static IEnumerable<Product> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "getproducts")]
            HttpRequestData req,
            [MySqlInput("select * from Products",
                "MySqlConnectionString")]
            IEnumerable<Product> products)
        {
            return products;
        }
    }
}

Desencadenador HTTP, eliminación de filas

En el ejemplo siguiente se muestra una función de C# que ejecuta un procedimiento almacenado con entrada del parámetro de consulta de la solicitud HTTP.

El procedimiento DeleteProductsCost almacenado debe crearse en la base de datos MySQL. En este ejemplo, el procedimiento almacenado elimina un único registro o todos los registros, en función del valor del parámetro .

DROP PROCEDURE IF EXISTS DeleteProductsCost;

Create Procedure DeleteProductsCost(cost INT)
BEGIN
  DELETE from Products where Products.cost = cost;
END
namespace AzureMySqlSamples.InputBindingSamples
{
    public static class GetProductsStoredProcedure
    {
        [FunctionName(nameof(GetProductsStoredProcedure))]
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "getproducts-storedprocedure/{cost}")]
            HttpRequest req,
            [MySql("DeleteProductsCost",
                "MySqlConnectionString",
                commandType: System.Data.CommandType.StoredProcedure,
                parameters: "@Cost={cost}")]
            IEnumerable<Product> products)
        {
            return new OkObjectResult(products);
        }
    }
}

Hay más ejemplos para el enlace de entrada de Azure Database for MySQL en el repositorio de GitHub.

En esta sección se incluyen los ejemplos siguientes:

En este ejemplo se hace referencia a una clase Product y una tabla de base de datos correspondiente:

package com.function.Common;

import com.fasterxml.jackson.annotation.JsonProperty;

public class Product {
    @JsonProperty("ProductId")
    private int ProductId;
    @JsonProperty("Name")
    private String Name;
    @JsonProperty("Cost")
    private int Cost;

    public Product() {
    }
DROP TABLE IF EXISTS Products;

CREATE TABLE Products (
  ProductId int PRIMARY KEY,
  Name varchar(100) NULL,
  Cost int NULL
);

Desencadenador HTTP, obtención de varias filas

En el ejemplo siguiente se muestra un enlace de entrada de Azure Database for MySQL en una función de Java que desencadena una solicitud HTTP. El enlace lee de una consulta y devuelve los resultados en la respuesta HTTP.

package com.function;

import com.function.Common.Product;
import com.microsoft.azure.functions.HttpMethod;
import com.microsoft.azure.functions.HttpRequestMessage;
import com.microsoft.azure.functions.HttpResponseMessage;
import com.microsoft.azure.functions.HttpStatus;
import com.microsoft.azure.functions.annotation.AuthorizationLevel;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.HttpTrigger;
import com.microsoft.azure.functions.mysql.annotation.CommandType;
import com.microsoft.azure.functions.mysql.annotation.MySqlInput;

import java.util.Optional;

public class GetProducts {
    @FunctionName("GetProducts")
    public HttpResponseMessage run(
            @HttpTrigger(
                name = "req",
                methods = {HttpMethod.GET},
                authLevel = AuthorizationLevel.ANONYMOUS,
                route = "getproducts}")
                HttpRequestMessage<Optional<String>> request,
            @MySqlInput(
                name = "products",
                commandText = "SELECT * FROM Products",
                commandType = CommandType.Text,
                connectionStringSetting = "MySqlConnectionString")
                Product[] products) {

        return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(products).build();
    }
}

Desencadenador HTTP, obtener una fila por identificador de una cadena de consulta

En el ejemplo siguiente se muestra un enlace de entrada de Azure Database for MySQL en una función de Java que desencadena una solicitud HTTP. El enlace lee de una consulta filtrada por un parámetro de la cadena de consulta y devuelve la fila en la respuesta HTTP.

public class GetProductById {
    @FunctionName("GetProductById")
    public HttpResponseMessage run(
            @HttpTrigger(
                name = "req",
                methods = {HttpMethod.GET},
                authLevel = AuthorizationLevel.ANONYMOUS,
                route = "getproducts/{productid}")
                HttpRequestMessage<Optional<String>> request,
            @MySqlInput(
                name = "products",
                commandText = "SELECT * FROM Products WHERE ProductId= @productId",
                commandType = CommandType.Text,
                parameters = "@productId={productid}",
                connectionStringSetting = "MySqlConnectionString")
                Product[] products) {

        return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(products).build();
    }
}

Desencadenador HTTP, eliminación de filas

En el ejemplo siguiente se muestra un enlace de entrada de Azure Database for MySQL en una función de Java que desencadena una solicitud HTTP. El enlace ejecuta un procedimiento almacenado con la entrada del parámetro de consulta de la solicitud HTTP.

El procedimiento almacenado DeleteProductsCost debe crearse en la base de datos. En este ejemplo, el procedimiento almacenado elimina un único registro o todos los registros, en función del valor del parámetro .

DROP PROCEDURE IF EXISTS DeleteProductsCost;

Create Procedure DeleteProductsCost(cost INT)
BEGIN
  DELETE from Products where Products.cost = cost;
END
public class DeleteProductsStoredProcedure {
    @FunctionName("DeleteProductsStoredProcedure")
    public HttpResponseMessage run(
            @HttpTrigger(
                name = "req",
                methods = {HttpMethod.GET},
                authLevel = AuthorizationLevel.ANONYMOUS,
                route = "Deleteproducts-storedprocedure/{cost}")
                HttpRequestMessage<Optional<String>> request,
            @MySqlInput(
                name = "products",
                commandText = "DeleteProductsCost",
                commandType = CommandType.StoredProcedure,
                parameters = "@Cost={cost}",
                connectionStringSetting = "MySqlConnectionString")
                Product[] products) {

        return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(products).build();
    }
}

Hay más ejemplos para el enlace de entrada de Azure Database for MySQL en el repositorio de GitHub.

En esta sección se incluyen los ejemplos siguientes:

Los ejemplos hacen referencia a una tabla de base de datos:

DROP TABLE IF EXISTS Products;

CREATE TABLE Products (
  ProductId int PRIMARY KEY,
  Name varchar(100) NULL,
  Cost int NULL
);

Desencadenador HTTP, obtención de varias filas

En el ejemplo siguiente se muestra un enlace de entrada de Azure Database for MySQL que desencadena una solicitud HTTP. El enlace lee de una consulta y devuelve los resultados en la respuesta HTTP.

import { app, HttpRequest, HttpResponseInit, input, InvocationContext } from '@azure/functions';

const mysqlInput = input.generic({
    commandText: 'select * from Products',
    commandType: 'Text',
    connectionStringSetting: 'MySqlConnectionString',
});

export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    context.log('HTTP trigger and MySQL input binding function processed a request.');
    const products = context.extraInputs.get(mysqlInput);
    return {
        jsonBody: products,
    };
}

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraInputs: [mysqlInput],
    handler: httpTrigger1,
});
const { app, input } = require('@azure/functions');

const mysqlInput = input.generic({
    type: 'mysql',
    commandText: 'select * from Products where Cost = @Cost',
    parameters: '@Cost={Cost}',
    commandType: 'Text',
    connectionStringSetting: 'MySqlConnectionString'
})

app.http('GetProducts', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    route: 'getproducts/{cost}',
    extraInputs: [mysqlInput],
    handler: async (request, context) => {
        const products = JSON.stringify(context.extraInputs.get(mysqlInput));

        return {
            status: 200,
            body: products
        };
    }
});

Desencadenador HTTP, obtener una fila por identificador de una cadena de consulta

En el ejemplo siguiente se muestra un enlace de entrada de Azure Database for MySQL que desencadena una solicitud HTTP. El enlace lee de una consulta filtrada por un parámetro de la cadena de consulta y devuelve la fila en la respuesta HTTP.

import { app, HttpRequest, HttpResponseInit, input, InvocationContext } from '@azure/functions';

const mysqlInput = input.generic({
    commandText: 'select * from Products where ProductId= @productId',
    commandType: 'Text',
    parameters: '@productId={productid}',
    connectionStringSetting: 'MySqlConnectionString',
});

export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    context.log('HTTP trigger and MySQL input binding function processed a request.');
    const products = context.extraInputs.get(mysqlInput);
    return {
        jsonBody: products,
    };
}

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraInputs: [mysqlInput],
    handler: httpTrigger1,
});
const { app, input } = require('@azure/functions');

const mysqlInput = input.generic({
    type: 'mysql',
    commandText: 'select * from Products where ProductId= @productId',
    commandType: 'Text',
    parameters: '@productId={productid}',
    connectionStringSetting: 'MySqlConnectionString'
})

app.http('GetProducts', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    route: 'getproducts/{productid}',
    extraInputs: [mysqlInput],
    handler: async (request, context) => {
        const products = JSON.stringify(context.extraInputs.get(mysqlInput));

        return {
            status: 200,
            body: products
        };
    }
});

Desencadenador HTTP, eliminación de filas

En el ejemplo siguiente se muestra un enlace de entrada de Azure Database for MySQL que desencadena una solicitud HTTP. El enlace ejecuta un procedimiento almacenado con la entrada del parámetro de consulta de la solicitud HTTP.

El procedimiento almacenado DeleteProductsCost debe crearse en la base de datos. En este ejemplo, el procedimiento almacenado elimina un único registro o todos los registros, en función del valor del parámetro .

DROP PROCEDURE IF EXISTS DeleteProductsCost;

Create Procedure DeleteProductsCost(cost INT)
BEGIN
  DELETE from Products where Products.cost = cost;
END
import { app, HttpRequest, HttpResponseInit, input, InvocationContext } from '@azure/functions';

const mysqlInput = input.generic({
    commandText: 'DeleteProductsCost',
    commandType: 'StoredProcedure',
    parameters: '@Cost={cost}',
    connectionStringSetting: 'MySqlConnectionString',
});

export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    context.log('HTTP trigger and MySQL input binding function processed a request.');
    const products = context.extraInputs.get(mysqlInput);
    return {
        jsonBody: products,
    };
}

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraInputs: [mysqlInput],
    handler: httpTrigger1,
});
const { app, input } = require('@azure/functions');

const mysqlInput = input.generic({
    type: 'mysql',
    commandText: 'DeleteProductsCost',
    commandType: 'StoredProcedure',
    parameters: '@Cost={cost}',
    connectionStringSetting: 'MySqlConnectionString'
})

app.http('httpTrigger1', {
    methods: ['POST'],
    authLevel: 'anonymous',
    route: 'DeleteProductsByCost',
    extraInputs: [mysqlInput],
    handler: async (request, context) => {
        const products = JSON.stringify(context.extraInputs.get(mysqlInput));

        return {
            status: 200,
            body: products
        };
    }
});

Hay más ejemplos para el enlace de entrada de Azure Database for MySQL en el repositorio de GitHub.

En esta sección se incluyen los ejemplos siguientes:

Los ejemplos hacen referencia a una tabla de base de datos:

DROP TABLE IF EXISTS Products;

CREATE TABLE Products (
  ProductId int PRIMARY KEY,
  Name varchar(100) NULL,
  Cost int NULL
);

Desencadenador HTTP, obtención de varias filas

En el ejemplo siguiente se muestra un enlace de entrada de Azure Database for MySQL en un archivo function.json y una función de PowerShell que desencadena una solicitud HTTP. El enlace lee de una consulta y devuelve los resultados en la respuesta HTTP.

En el siguiente ejemplo se muestran los datos de enlace del archivo function.json:

{
  "bindings": [
    {
      "authLevel": "function",
      "name": "Request",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get"
      ],
      "route": "getproducts/{cost}"
    },
    {
      "name": "response",
      "type": "http",
      "direction": "out"
    },
    {
      "name": "products",
      "type": "mysql",
      "direction": "in",
      "commandText": "select * from Products",
      "commandType": "Text",
      "connectionStringSetting": "MySqlConnectionString"
    }
  ],
  "disabled": false
}

En la sección Configuración se explican estas propiedades.

El ejemplo siguiente es código de PowerShell de ejemplo para la función en el archivo run.ps1:

using namespace System.Net

param($Request, $TriggerMetadata, $products)

Write-Host "PowerShell function with MySql Input Binding processed a request."

Push-OutputBinding -Name response -Value ([HttpResponseContext]@{
    StatusCode = [System.Net.HttpStatusCode]::OK
    Body = $products
})

Desencadenador HTTP, obtener una fila por identificador de una cadena de consulta

En el ejemplo siguiente se muestra un enlace de entrada de Azure Database for MySQL en una función de PowerShell que desencadena una solicitud HTTP. El enlace lee de una consulta filtrada por un parámetro de la cadena de consulta y devuelve la fila en la respuesta HTTP.

En el siguiente ejemplo se muestran los datos de enlace del archivo function.json:

{
  "bindings": [
    {
      "authLevel": "function",
      "name": "Request",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get"
      ],
      "route": "getproducts/{productid}"
    },
    {
      "name": "response",
      "type": "http",
      "direction": "out"
    },
    {
      "name": "products",
      "type": "mysql",
      "direction": "in",
      "commandText": "select * from Products where ProductId= @productId",
      "commandType": "Text",
      "parameters": "MySqlConnectionString",
      "connectionStringSetting": "MySqlConnectionString"
    }
  ],
  "disabled": false
}

En la sección Configuración se explican estas propiedades.

El ejemplo siguiente es código de PowerShell de ejemplo para la función en el archivo run.ps1:

using namespace System.Net

param($Request, $TriggerMetadata, $products)

Write-Host "PowerShell function with MySql Input Binding processed a request."

Push-OutputBinding -Name response -Value ([HttpResponseContext]@{
    StatusCode = [System.Net.HttpStatusCode]::OK
    Body = $products
})

Desencadenador HTTP, eliminación de filas

En el ejemplo siguiente se muestra un enlace de entrada de Azure Database for MySQL en un archivo function.json y una función de PowerShell que desencadena una solicitud HTTP. El enlace ejecuta un procedimiento almacenado con la entrada del parámetro de consulta de la solicitud HTTP.

El procedimiento almacenado DeleteProductsCost debe crearse en la base de datos. En este ejemplo, el procedimiento almacenado elimina un único registro o todos los registros, en función del valor del parámetro .

DROP PROCEDURE IF EXISTS DeleteProductsCost;

Create Procedure DeleteProductsCost(cost INT)
BEGIN
  DELETE from Products where Products.cost = 'cost';
END
{
  "bindings": [
    {
      "authLevel": "function",
      "name": "Request",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get"
      ],
      "route": "deleteproducts-storedprocedure/{cost}"
    },
    {
      "name": "response",
      "type": "http",
      "direction": "out"
    },
    {
      "name": "products",
      "type": "mysql",
      "direction": "in",
      "commandText": "DeleteProductsCost",
      "commandType": "StoredProcedure",
      "parameters": "@Cost={cost}",
      "connectionStringSetting": "MySqlConnectionString"
    }
  ],
  "disabled": false
}

En la sección Configuración se explican estas propiedades.

El ejemplo siguiente es código de PowerShell de ejemplo para la función en el archivo run.ps1:

using namespace System.Net

param($Request, $TriggerMetadata, $products)

Write-Host "PowerShell function with MySql Input Binding processed a request."

Push-OutputBinding -Name response -Value ([HttpResponseContext]@{
    StatusCode = [System.Net.HttpStatusCode]::OK
    Body = $products
}

Hay más ejemplos para el enlace de entrada de Azure Database for MySQL en el repositorio de GitHub.

En esta sección se incluyen los ejemplos siguientes:

Los ejemplos hacen referencia a una tabla de base de datos:

DROP TABLE IF EXISTS Products;

CREATE TABLE Products (
  ProductId int PRIMARY KEY,
  Name varchar(100) NULL,
  Cost int NULL
);

Nota

Debe usar la versión 1.22.0b4 de Azure Functions para Python.

Desencadenador HTTP, obtención de varias filas

En el ejemplo siguiente se muestra un enlace de entrada de Azure Database for MySQL en un archivo function.json y una función de Python que desencadena una solicitud HTTP. El enlace lee de una consulta y devuelve los resultados en la respuesta HTTP.

El ejemplo siguiente es código de Python de ejemplo para el archivo function_app.py:

import azure.functions as func
import datetime
import json
import logging

app = func.FunctionApp()


@app.generic_trigger(arg_name="req", type="httpTrigger", route="getproducts/{cost}")
@app.generic_output_binding(arg_name="$return", type="http")
@app.generic_input_binding(arg_name="products", type="mysql",
                           commandText= "select * from Products",
                           command_type="Text",
                           connection_string_setting="MySqlConnectionString")
def mysql_test(req: func.HttpRequest, products: func.MySqlRowList) -> func.HttpResponse:
    rows = list(map(lambda r: json.loads(r.to_json()), products))

    return func.HttpResponse(
        json.dumps(rows),
        status_code=200,
        mimetype="application/json"
    )

Desencadenador HTTP, obtener una fila por identificador de una cadena de consulta

En el ejemplo siguiente se muestra un enlace de entrada de Azure Database for MySQL en una función de Python que desencadena una solicitud HTTP. El enlace lee de una consulta filtrada por un parámetro de la cadena de consulta y devuelve la fila en la respuesta HTTP.

El ejemplo siguiente es código de Python de ejemplo para el archivo function_app.py:

import azure.functions as func
import datetime
import json
import logging

app = func.FunctionApp()


@app.generic_trigger(arg_name="req", type="httpTrigger", route="getproducts/{cost}")
@app.generic_output_binding(arg_name="$return", type="http")
@app.generic_input_binding(arg_name="products", type="mysql",
                           commandText= "select * from Products where ProductId= @productId",
                           command_type="Text",
                           parameters= "@productId={productid}",
                           connection_string_setting="MySqlConnectionString")
def mysql_test(req: func.HttpRequest, products: func.MySqlRowList) -> func.HttpResponse:
    rows = list(map(lambda r: json.loads(r.to_json()), products))

    return func.HttpResponse(
        json.dumps(rows),
        status_code=200,
        mimetype="application/json"
    )

Desencadenador HTTP, eliminación de filas

En el ejemplo siguiente se muestra un enlace de entrada de Azure Database for MySQL en un archivo function.json y una función de Python que desencadena una solicitud HTTP. El enlace ejecuta un procedimiento almacenado con la entrada del parámetro de consulta de la solicitud HTTP.

El procedimiento almacenado DeleteProductsCost debe crearse en la base de datos. En este ejemplo, el procedimiento almacenado elimina un único registro o todos los registros, en función del valor del parámetro .

DROP PROCEDURE IF EXISTS DeleteProductsCost;

Create Procedure DeleteProductsCost(cost INT)
BEGIN
  DELETE from Products where Products.cost = cost;
END

El ejemplo siguiente es código de Python de ejemplo para el archivo function_app.py:

import azure.functions as func
import datetime
import json
import logging

app = func.FunctionApp()


@app.generic_trigger(arg_name="req", type="httpTrigger", route="getproducts/{cost}")
@app.generic_output_binding(arg_name="$return", type="http")
@app.generic_input_binding(arg_name="products", type="mysql",
                           commandText= "DeleteProductsCost",
                           command_type="StoredProcedure",
                           parameters= "@Cost={cost}",
                           connection_string_setting="MySqlConnectionString")
def mysql_test(req: func.HttpRequest, products: func.MySqlRowList) -> func.HttpResponse:
    rows = list(map(lambda r: json.loads(r.to_json()), products))

    return func.HttpResponse(
        json.dumps(rows),
        status_code=200,
        mimetype="application/json"
    )

Atributos

La biblioteca de C# usa el MySqlAttribute atributo para declarar los enlaces mySQL en la función. El atributo tiene las siguientes propiedades:

Propiedad de atributo Descripción
CommandText Necesario. Comando o nombre de la consulta MySQL del procedimiento almacenado que ejecuta el enlace.
ConnectionStringSetting Necesario. Nombre de una configuración de aplicación que contiene la cadena de conexión de la base de datos en la que se ejecuta la consulta o el procedimiento almacenado. Este valor no es la cadena de conexión real y, en su lugar, debe resolverse en un nombre de variable de entorno.
CommandType Necesario. Valor CommandType , que es Text para una consulta y StoredProcedure para un procedimiento almacenado.
Parameters Opcional. Cero o más valores de parámetro pasados al comando durante la ejecución en forma de cadena individual. Debe seguir el formato @param1=param1,@param2=param2. El nombre del parámetro y el valor del parámetro no pueden contener una coma (,) ni un signo igual (=).

anotaciones

En la biblioteca en tiempo de ejecución de funciones de Java, use la @MySQLInput anotación en parámetros cuyos valores provendrían de Azure Database for MySQL. Esta anotación admite los siguientes elementos:

Elemento Descripción
commandText Necesario. Comando o nombre de la consulta MySQL del procedimiento almacenado que ejecuta el enlace.
connectionStringSetting Necesario. Nombre de una configuración de aplicación que contiene la cadena de conexión de la base de datos en la que se ejecuta la consulta o el procedimiento almacenado. Este valor no es la cadena de conexión real y, en su lugar, debe resolverse en un nombre de variable de entorno.
commandType Necesario. Valor CommandType , que es Text para una consulta y StoredProcedure para un procedimiento almacenado.
name Necesario. Nombre único del enlace de la función.
parameters Opcional. Cero o más valores de parámetro pasados al comando durante la ejecución en forma de cadena individual. Debe seguir el formato @param1=param1,@param2=param2. El nombre del parámetro y el valor del parámetro no pueden contener una coma (,) ni un signo igual (=).

Configuración

En la tabla siguiente se explican las propiedades que puede establecer en el options objeto pasado al input.generic() método :

Propiedad Descripción
commandText Necesario. Comando o nombre de la consulta MySQL del procedimiento almacenado que ejecuta el enlace.
connectionStringSetting Necesario. Nombre de una configuración de aplicación que contiene la cadena de conexión de la base de datos en la que se ejecuta la consulta o el procedimiento almacenado. Este valor no es la cadena de conexión real y, en su lugar, debe resolverse en un nombre de variable de entorno. Las palabras clave opcionales del valor de cadena de conexión están disponibles para refinar la conectividad de los enlaces de MySQL.
commandType Necesario. Valor CommandType , que es Text para una consulta y StoredProcedure para un procedimiento almacenado.
parameters Opcional. Cero o más valores de parámetro pasados al comando durante la ejecución en forma de cadena individual. Debe seguir el formato @param1=param1,@param2=param2. El nombre del parámetro y el valor del parámetro no pueden contener una coma (,) ni un signo igual (=).

Configuración

En la tabla siguiente se explican las propiedades de configuración de enlace establecidas en el archivo function.json:

Propiedad Descripción
type Necesario. Se debe establecer en mysql.
direction Necesario. Se debe establecer en in.
name Necesario. Nombre de la variable que representa los resultados de la consulta en el código de la función.
commandText Necesario. Comando o nombre de la consulta MySQL del procedimiento almacenado que ejecuta el enlace.
connectionStringSetting Necesario. Nombre de una configuración de aplicación que contiene la cadena de conexión de la base de datos en la que se ejecuta la consulta o el procedimiento almacenado. Este valor no es la cadena de conexión real y, en su lugar, debe resolverse en un nombre de variable de entorno. Las palabras clave opcionales del valor de cadena de conexión están disponibles para refinar la conectividad de los enlaces de MySQL.
commandType Necesario. Valor CommandType , que es Text para una consulta y StoredProcedure para un procedimiento almacenado.
parameters Opcional. Cero o más valores de parámetro pasados al comando durante la ejecución en forma de cadena individual. Debe seguir el formato @param1=param1,@param2=param2. El nombre del parámetro y el valor del parámetro no pueden contener una coma (,) ni un signo igual (=).

Cuando esté desarrollando localmente, agregue la configuración de la aplicación en el archivo local.settings.json de la colección Values.

Uso

El constructor del atributo toma el texto del comando MySQL, el tipo de comando, los parámetros y el nombre de la configuración de la cadena de conexión. El comando puede ser una consulta MySQL con el tipo System.Data.CommandType.Text de comando o un nombre de procedimiento almacenado con el tipo System.Data.CommandType.StoredProcedurede comando . El nombre de la configuración de la cadena de conexión corresponde a la configuración de la aplicación (en local.settings.json para el desarrollo local) que contiene la cadena de conexión a Azure Database for MySQL.

Si se produce una excepción cuando se ejecuta un enlace de entrada de Azure Database for MySQL, el código de función deja de ejecutarse. El resultado puede ser un código de error, como un desencadenador HTTP que devuelve un código de error 500.