Delen via


Azure Database for MySQL-invoerbinding voor Azure Functions

Wanneer een functie wordt uitgevoerd, haalt de Azure Database for MySQL-invoerbinding gegevens op uit een database en geeft deze door aan de invoerparameter van de functie.

Zie het overzicht voor meer informatie over de installatie en configuratie.

Belangrijk

In dit artikel worden tabbladen gebruikt ter ondersteuning van meerdere versies van het Node.js programmeermodel. Het v4-model is algemeen beschikbaar en is ontworpen voor een flexibelere en intuïtievere ervaring voor JavaScript- en TypeScript-ontwikkelaars. Raadpleeg de ontwikkelaarshandleiding voor Azure Functions Node.js voor meer informatie over hoe het v4-model werkt. Raadpleeg de migratiehandleiding voor meer informatie over de verschillen tussen v3 en v4.

Voorbeelden

U kunt een C#-functie maken met behulp van een van de volgende C#-modi:

  • Geïsoleerd werkrolmodel: gecompileerde C#-functie die wordt uitgevoerd in een werkproces dat is geïsoleerd van de runtime. Er is een geïsoleerd werkproces vereist om C#-functies te ondersteunen die worden uitgevoerd op langetermijnondersteuning (LTS) en niet-LTS-versies voor .NET en .NET Framework.
  • In-process model: gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de Azure Functions-runtime.
  • C#-script: wordt voornamelijk gebruikt wanneer u C#-functies maakt in Azure Portal.

Meer voorbeelden voor de Azure Database for MySQL-invoerbinding zijn beschikbaar in de GitHub-opslagplaats.

Deze sectie bevat de volgende voorbeelden:

De voorbeelden verwijzen naar een Product klasse en een bijbehorende databasetabel:

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
);

HTTP-trigger, een rij ophalen op basis van id uit een queryreeks

In het volgende voorbeeld ziet u een C#-functie waarmee één record wordt opgehaald. De functie wordt geactiveerd door een HTTP-aanvraag die gebruikmaakt van een querytekenreeks om de id op te geven. Deze id wordt gebruikt om een Product record met de opgegeven query op te halen.

Notitie

De http-queryreeksparameter is hoofdlettergevoelig.

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;
        }
    }
}

HTTP-trigger, meerdere rijen ophalen uit een routeparameter

In het volgende voorbeeld ziet u een C#-functie waarmee rijen worden opgehaald die door de query worden geretourneerd. De functie wordt geactiveerd door een HTTP-aanvraag die routegegevens gebruikt om de waarde van een queryparameter op te geven. Deze parameter wordt gebruikt om de Product records in de opgegeven query te filteren.

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;
        }
    }
}

HTTP-trigger, rijen verwijderen

In het volgende voorbeeld ziet u een C#-functie waarmee een opgeslagen procedure wordt uitgevoerd met invoer van de queryparameter van de HTTP-aanvraag.

De opgeslagen procedure DeleteProductsCost moet worden gemaakt in de MySQL-database. In dit voorbeeld verwijdert de opgeslagen procedure één record of alle records, afhankelijk van de waarde van de parameter.

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);
        }
    }
}

Meer voorbeelden voor de Azure Database for MySQL-invoerbinding zijn beschikbaar in de GitHub-opslagplaats.

Deze sectie bevat de volgende voorbeelden:

De voorbeelden verwijzen naar een Product klasse en een bijbehorende databasetabel:

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
);

HTTP-trigger, meerdere rijen ophalen

In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een Java-functie die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query en retourneert de resultaten in het HTTP-antwoord.

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();
    }
}

HTTP-trigger, een rij ophalen op basis van id uit een queryreeks

In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een Java-functie die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query die is gefilterd op een parameter uit de querytekenreeks en retourneert de rij in het HTTP-antwoord.

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();
    }
}

HTTP-trigger, rijen verwijderen

In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een Java-functie die door een HTTP-aanvraag wordt geactiveerd. De binding voert een opgeslagen procedure uit met invoer van de queryparameter van de HTTP-aanvraag.

De opgeslagen procedure DeleteProductsCost moet worden gemaakt in de database. In dit voorbeeld verwijdert de opgeslagen procedure één record of alle records, afhankelijk van de waarde van de parameter.

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();
    }
}

Meer voorbeelden voor de Azure Database for MySQL-invoerbinding zijn beschikbaar in de GitHub-opslagplaats.

Deze sectie bevat de volgende voorbeelden:

De voorbeelden verwijzen naar een databasetabel:

DROP TABLE IF EXISTS Products;

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

HTTP-trigger, meerdere rijen ophalen

In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query en retourneert de resultaten in het HTTP-antwoord.

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
        };
    }
});

HTTP-trigger, een rij ophalen op basis van id uit een queryreeks

In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query die is gefilterd op een parameter uit de querytekenreeks en retourneert de rij in het HTTP-antwoord.

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
        };
    }
});

HTTP-trigger, rijen verwijderen

In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding die door een HTTP-aanvraag wordt geactiveerd. De binding voert een opgeslagen procedure uit met invoer van de queryparameter van de HTTP-aanvraag.

De opgeslagen procedure DeleteProductsCost moet worden gemaakt in de database. In dit voorbeeld verwijdert de opgeslagen procedure één record of alle records, afhankelijk van de waarde van de parameter.

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
        };
    }
});

Meer voorbeelden voor de Azure Database for MySQL-invoerbinding zijn beschikbaar in de GitHub-opslagplaats.

Deze sectie bevat de volgende voorbeelden:

De voorbeelden verwijzen naar een databasetabel:

DROP TABLE IF EXISTS Products;

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

HTTP-trigger, meerdere rijen ophalen

In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een function.json-bestand en een PowerShell-functie die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query en retourneert de resultaten in het HTTP-antwoord.

Het volgende voorbeeld bestaat uit bindingsgegevens in het function.json-bestand:

{
  "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
}

In de sectie Configuratie worden deze eigenschappen uitgelegd.

Het volgende voorbeeld is PowerShell-voorbeeldcode voor de functie in het run.ps1-bestand:

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
})

HTTP-trigger, een rij ophalen op basis van id uit een queryreeks

In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een PowerShell-functie die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query die is gefilterd op een parameter uit de querytekenreeks en retourneert de rij in het HTTP-antwoord.

Het volgende voorbeeld bestaat uit bindingsgegevens in het function.json-bestand:

{
  "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
}

In de sectie Configuratie worden deze eigenschappen uitgelegd.

Het volgende voorbeeld is PowerShell-voorbeeldcode voor de functie in het run.ps1-bestand:

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
})

HTTP-trigger, rijen verwijderen

In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een function.json-bestand en een PowerShell-functie die door een HTTP-aanvraag wordt geactiveerd. De binding voert een opgeslagen procedure uit met invoer van de queryparameter van de HTTP-aanvraag.

De opgeslagen procedure DeleteProductsCost moet worden gemaakt in de database. In dit voorbeeld verwijdert de opgeslagen procedure één record of alle records, afhankelijk van de waarde van de parameter.

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
}

In de sectie Configuratie worden deze eigenschappen uitgelegd.

Het volgende voorbeeld is PowerShell-voorbeeldcode voor de functie in het run.ps1-bestand:

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
}

Meer voorbeelden voor de Azure Database for MySQL-invoerbinding zijn beschikbaar in de GitHub-opslagplaats.

Deze sectie bevat de volgende voorbeelden:

De voorbeelden verwijzen naar een databasetabel:

DROP TABLE IF EXISTS Products;

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

Notitie

U moet Azure Functions versie 1.22.0b4 voor Python gebruiken.

HTTP-trigger, meerdere rijen ophalen

In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een function.json-bestand en een Python-functie die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query en retourneert de resultaten in het HTTP-antwoord.

Het volgende voorbeeld is python-voorbeeldcode voor het function_app.py-bestand:

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"
    )

HTTP-trigger, een rij ophalen op basis van id uit een queryreeks

In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een Python-functie die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query die is gefilterd op een parameter uit de querytekenreeks en retourneert de rij in het HTTP-antwoord.

Het volgende voorbeeld is python-voorbeeldcode voor het function_app.py-bestand:

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"
    )

HTTP-trigger, rijen verwijderen

In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een function.json-bestand en een Python-functie die door een HTTP-aanvraag wordt geactiveerd. De binding voert een opgeslagen procedure uit met invoer van de queryparameter van de HTTP-aanvraag.

De opgeslagen procedure DeleteProductsCost moet worden gemaakt in de database. In dit voorbeeld verwijdert de opgeslagen procedure één record of alle records, afhankelijk van de waarde van de parameter.

DROP PROCEDURE IF EXISTS DeleteProductsCost;

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

Het volgende voorbeeld is python-voorbeeldcode voor het function_app.py-bestand:

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"
    )

Kenmerken

De C#-bibliotheek gebruikt het MySqlAttribute kenmerk om de MySQL-bindingen voor de functie te declareren. Het kenmerk heeft de volgende eigenschappen:

Kenmerkeigenschap Beschrijving
CommandText Vereist. De MySQL-queryopdracht of -naam van de opgeslagen procedure die door de binding wordt uitgevoerd.
ConnectionStringSetting Vereist. De naam van een app-instelling die de verbindingsreeks voor de database bevat waarop de query of opgeslagen procedure wordt uitgevoerd. Deze waarde is niet de werkelijke verbindingsreeks en moet in plaats daarvan worden omgezet in de naam van een omgevingsvariabele.
CommandType Vereist. Een CommandType waarde, die voor een query en Text voor een opgeslagen procedure isStoredProcedure.
Parameters Optioneel. Nul of meer parameterwaarden die tijdens de uitvoering aan de opdracht zijn doorgegeven als één tekenreeks. Moet de notatie @param1=param1,@param2=param2volgen. De parameternaam en parameterwaarde mogen geen komma (,) of een gelijkteken (=) bevatten.

Aantekeningen

Gebruik in de Runtime-bibliotheek van Java-functies de @MySQLInput aantekening voor parameters waarvan de waarden afkomstig zijn van Azure Database for MySQL. Deze aantekening ondersteunt de volgende elementen:

Onderdeel Beschrijving
commandText Vereist. De MySQL-queryopdracht of -naam van de opgeslagen procedure die door de binding wordt uitgevoerd.
connectionStringSetting Vereist. De naam van een app-instelling die de verbindingsreeks voor de database bevat waarop de query of opgeslagen procedure wordt uitgevoerd. Deze waarde is niet de werkelijke verbindingsreeks en moet in plaats daarvan worden omgezet in de naam van een omgevingsvariabele.
commandType Vereist. Een CommandType waarde, die voor een query en Text voor een opgeslagen procedure isStoredProcedure.
name Vereist. De unieke naam van de functiebinding.
parameters Optioneel. Nul of meer parameterwaarden die tijdens de uitvoering aan de opdracht zijn doorgegeven als één tekenreeks. Moet de notatie @param1=param1,@param2=param2volgen. De parameternaam en parameterwaarde mogen geen komma (,) of een gelijkteken (=) bevatten.

Configuratie

In de volgende tabel worden de eigenschappen uitgelegd die u kunt instellen voor het options object dat aan de input.generic() methode is doorgegeven:

Eigenschappen Beschrijving
commandText Vereist. De MySQL-queryopdracht of -naam van de opgeslagen procedure die door de binding wordt uitgevoerd.
connectionStringSetting Vereist. De naam van een app-instelling die de verbindingsreeks voor de database bevat waarop de query of opgeslagen procedure wordt uitgevoerd. Deze waarde is niet de werkelijke verbindingsreeks en moet in plaats daarvan worden omgezet in de naam van een omgevingsvariabele. Optionele trefwoorden in de verbindingsreeks-waarde zijn beschikbaar om de connectiviteit van MySQL-bindingen te verfijnen.
commandType Vereist. Een CommandType waarde, die voor een query en Text voor een opgeslagen procedure isStoredProcedure.
parameters Optioneel. Nul of meer parameterwaarden die tijdens de uitvoering aan de opdracht zijn doorgegeven als één tekenreeks. Moet de notatie @param1=param1,@param2=param2volgen. De parameternaam en parameterwaarde mogen geen komma (,) of een gelijkteken (=) bevatten.

Configuratie

In de volgende tabel worden de bindingsconfiguratie-eigenschappen uitgelegd die u in het function.json-bestand hebt ingesteld:

Eigenschappen Beschrijving
type Vereist. Moet worden ingesteld op mysql.
direction Vereist. Moet worden ingesteld op in.
name Vereist. De naam van de variabele die de query vertegenwoordigt, resulteert in functiecode.
commandText Vereist. De MySQL-queryopdracht of -naam van de opgeslagen procedure die door de binding wordt uitgevoerd.
connectionStringSetting Vereist. De naam van een app-instelling die de verbindingsreeks voor de database bevat waarop de query of opgeslagen procedure wordt uitgevoerd. Deze waarde is niet de werkelijke verbindingsreeks en moet in plaats daarvan worden omgezet in de naam van een omgevingsvariabele. Optionele trefwoorden in de verbindingsreeks-waarde zijn beschikbaar om de connectiviteit van MySQL-bindingen te verfijnen.
commandType Vereist. Een CommandType waarde, die voor een query en Text voor een opgeslagen procedure isStoredProcedure.
parameters Optioneel. Nul of meer parameterwaarden die tijdens de uitvoering aan de opdracht zijn doorgegeven als één tekenreeks. Moet de notatie @param1=param1,@param2=param2volgen. De parameternaam en parameterwaarde mogen geen komma (,) of een gelijkteken (=) bevatten.

Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values verzameling.

Gebruik

De constructor van het kenmerk gebruikt de mySQL-opdrachttekst, het opdrachttype, de parameters en de naam van de instelling van de verbindingsreeks. De opdracht kan een MySQL-query zijn met het opdrachttype System.Data.CommandType.Text of een opgeslagen procedurenaam met het opdrachttype System.Data.CommandType.StoredProcedure. De naam van de verbindingsreeksinstelling komt overeen met de toepassingsinstelling (in local.settings.json voor lokale ontwikkeling) die de verbindingsreeks bevat met Azure Database for MySQL.

Als er een uitzondering optreedt wanneer een Azure Database for MySQL-invoerbinding wordt uitgevoerd, wordt de functiecode niet meer uitgevoerd. Het resultaat kan een foutcode zijn, zoals een HTTP-trigger die een 500-foutcode retourneert.