Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt de Azure Database for MySQL-uitvoerbinding gebruiken om naar een database te schrijven.
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.
Belangrijk
De ondersteuning wordt beëindigd voor het in-process model op 10 november 2026. We raden u ten zeerste aan uw apps te migreren naar het geïsoleerde werkrolmodel voor volledige ondersteuning.
Meer voorbeelden voor de Azure Database for MySQL-uitvoerbinding zijn beschikbaar in de GitHub-opslagplaats.
Deze sectie bevat het volgende voorbeeld:
Het voorbeeld verwijst 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, één record schrijven
In het volgende voorbeeld ziet u een C#-functie waarmee een record wordt toegevoegd aan een database, met behulp van gegevens in een HTTP-aanvraag als een JSON-hoofdtekst POST .
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.OutputBindingSamples
{
public static class AddProduct
{
[FunctionName(nameof(AddProduct))]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "addproduct")]
[FromBody] Product prod,
[MySql("Products", "MySqlConnectionString")] out Product product)
{
product = prod;
return new CreatedResult($"/api/addproduct", product);
}
}
}
Meer voorbeelden voor de Azure Database for MySQL-uitvoerbinding zijn beschikbaar in de GitHub-opslagplaats.
Deze sectie bevat het volgende voorbeeld:
Het voorbeeld verwijst 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() {
}
public Product(int productId, String name, int cost) {
ProductId = productId;
Name = name;
Cost = cost;
}
}
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
HTTP-trigger, een record naar een tabel schrijven
In het volgende voorbeeld ziet u een Azure Database for MySQL-uitvoerbinding in een Java-functie die een record toevoegt aan een tabel, met behulp van gegevens in een HTTP-aanvraag als een JSON-hoofdtekst POST . De functie heeft een extra afhankelijkheid van de com.google.code.gson-bibliotheek om de JSON-hoofdtekst te parseren.
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
package com.function;
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.OutputBinding;
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.MySqlOutput;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.function.Common.Product;
import java.io.IOException;
import java.util.Optional;
public class AddProduct {
@FunctionName("AddProduct")
public HttpResponseMessage run(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "addproduct")
HttpRequestMessage<Optional<String>> request,
@MySqlOutput(
name = "product",
commandText = "Products",
connectionStringSetting = "MySqlConnectionString")
OutputBinding<Product> product) throws JsonParseException, JsonMappingException, IOException {
String json = request.getBody().get();
ObjectMapper mapper = new ObjectMapper();
Product p = mapper.readValue(json, Product.class);
product.setValue(p);
return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(product).build();
}
}
Meer voorbeelden voor de Azure Database for MySQL-uitvoerbinding zijn beschikbaar in de GitHub-opslagplaats.
Deze sectie bevat het volgende voorbeeld:
Het voorbeeld verwijst naar een databasetabel:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
HTTP-trigger, records schrijven naar een tabel
In het volgende voorbeeld ziet u een Azure Database for MySQL-uitvoerbinding waarmee records worden toegevoegd aan een tabel, met behulp van gegevens die zijn opgegeven in een HTTP-aanvraag als JSON-hoofdtekst POST .
const { app, output } = require('@azure/functions');
const mysqlOutput = output.generic({
type: 'mysql',
commandText: 'Products',
connectionStringSetting: 'MySqlConnectionString'
})
// Upsert the product, which will insert it into the Products table if the primary key (ProductId) for that item doesn't exist.
// If it does, update it to have the new name and cost.
app.http('AddProduct', {
methods: ['POST'],
authLevel: 'anonymous',
extraOutputs: [mysqlOutput],
handler: async (request, context) => {
// Note that this expects the body to be a JSON object or array of objects that have a property
// matching each of the columns in the table to upsert to.
const product = await request.json();
context.extraOutputs.set(mysqlOutput, product);
return {
status: 201,
body: JSON.stringify(product)
};
}
});
const { app, output } = require('@azure/functions');
const mysqlOutput = output.generic({
type: 'mysql',
commandText: 'Products',
connectionStringSetting: 'MySqlConnectionString'
})
// Upsert the product, which will insert it into the Products table if the primary key (ProductId) for that item doesn't exist.
// If it does, update it to have the new name and cost.
app.http('AddProduct', {
methods: ['POST'],
authLevel: 'anonymous',
extraOutputs: [mysqlOutput],
handler: async (request, context) => {
// Note that this expects the body to be a JSON object or array of objects that have a property
// matching each of the columns in the table to upsert to.
const product = await request.json();
context.extraOutputs.set(mysqlOutput, product);
return {
status: 201,
body: JSON.stringify(product)
};
}
});
Meer voorbeelden voor de Azure Database for MySQL-uitvoerbinding zijn beschikbaar in de GitHub-opslagplaats.
Deze sectie bevat het volgende voorbeeld:
Het voorbeeld verwijst naar een databasetabel:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
HTTP-trigger, records schrijven naar een tabel
In het volgende voorbeeld ziet u een Azure Database for MySQL-uitvoerbinding in een function.json-bestand en een PowerShell-functie die records toevoegt aan een tabel, met behulp van gegevens in een HTTP-aanvraag als een JSON-hoofdtekst POST .
Het volgende voorbeeld bestaat uit bindingsgegevens in het function.json-bestand:
{
"bindings": [
{
"authLevel": "function",
"name": "Request",
"direction": "in",
"type": "httpTrigger",
"methods": [
"post"
],
"route": "addproduct"
},
{
"name": "response",
"type": "http",
"direction": "out"
},
{
"name": "product",
"type": "mysql",
"direction": "out",
"commandText": "Products",
"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
# Trigger binding data passed in via parameter block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell function with MySql Output Binding processed a request."
# Note that this expects the body to be a JSON object or array of objects
# that have a property matching each of the columns in the table to upsert to.
$req_body = $Request.Body
# Assign the value that you want to pass to the MySQL output binding.
# The -Name value corresponds to the name property in the function.json file for the binding.
Push-OutputBinding -Name product -Value $req_body
# Assign the value to return as the HTTP response.
# The -Name value matches the name property in the function.json file for the binding.
Push-OutputBinding -Name response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $req_body
})
Meer voorbeelden voor de Azure Database for MySQL-uitvoerbinding zijn beschikbaar in de GitHub-opslagplaats.
Deze sectie bevat het volgende voorbeeld:
Het voorbeeld verwijst 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, records schrijven naar een tabel
In het volgende voorbeeld ziet u een Azure Database for MySQL-uitvoerbinding in een function.json-bestand en een Python-functie die records toevoegt aan een tabel, met behulp van gegevens in een HTTP-aanvraag als een JSON-hoofdtekst POST .
Het volgende voorbeeld is python-voorbeeldcode voor het function_app.py-bestand:
import json
import azure.functions as func
app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@app.generic_trigger(arg_name="req", type="httpTrigger", route="addproduct")
@app.generic_output_binding(arg_name="$return", type="http")
@app.generic_output_binding(arg_name="r", type="mysql",
command_text="Products",
connection_string_setting="MySqlConnectionString")
def mysql_output(req: func.HttpRequest, r: func.Out[func.MySqlRow]) \
-> func.HttpResponse:
body = json.loads(req.get_body())
row = func.MySqlRow.from_dict(body)
r.set(row)
return func.HttpResponse(
body=req.get_body(),
status_code=201,
mimetype="application/json"
)
Kenmerken
De C#-bibliotheek gebruikt het MySqlAttribute kenmerk om de MySQL-bindingen voor de functie te declareren, die de volgende eigenschappen heeft:
| Kenmerkeigenschap | Beschrijving |
|---|---|
CommandText |
Vereist. De naam van de tabel waarnaar de binding schrijft. |
ConnectionStringSetting |
Vereist. De naam van een app-instelling die de verbindingsreeks voor de database bevat waarnaar gegevens worden geschreven. Deze waarde is niet de werkelijke verbindingsreeks en moet in plaats daarvan worden omgezet in een omgevingsvariabele. |
Aantekeningen
Gebruik in de Runtime-bibliotheek van Java-functies de @MySQLOutput aantekening voor parameters waarvan de waarde afkomstig is van Azure Database for MySQL. Deze aantekening ondersteunt de volgende elementen:
| Onderdeel | Beschrijving |
|---|---|
commandText |
Vereist. De naam van de tabel waarnaar de binding schrijft. |
connectionStringSetting |
Vereist. De naam van een app-instelling die de verbindingsreeks voor de database bevat waarnaar gegevens worden geschreven. Deze waarde is niet de werkelijke verbindingsreeks en moet in plaats daarvan worden omgezet in een omgevingsvariabele. |
name |
Vereist. De unieke naam van de functiebinding. |
Configuratie
In de volgende tabel worden de eigenschappen uitgelegd die u kunt instellen voor het options object dat aan de output.generic() methode is doorgegeven:
| Eigenschappen | Beschrijving |
|---|---|
commandText |
Vereist. De naam van de tabel waarnaar de binding schrijft. |
connectionStringSetting |
Vereist. De naam van een app-instelling die de verbindingsreeks voor de database bevat waarnaar gegevens worden geschreven. Deze waarde is niet de werkelijke verbindingsreeks en moet in plaats daarvan worden omgezet in een omgevingsvariabele. |
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 out. |
name |
Vereist. De naam van de variabele die de entiteit in functiecode vertegenwoordigt. |
commandText |
Vereist. De naam van de tabel waarnaar de binding schrijft. |
connectionStringSetting |
Vereist. De naam van een app-instelling die de verbindingsreeks voor de database bevat waarnaar gegevens worden geschreven. Deze waarde is niet de werkelijke verbindingsreeks en moet in plaats daarvan worden omgezet in een omgevingsvariabele. |
Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values verzameling.
Notitie
De uitvoerbinding ondersteunt alle speciale tekens, waaronder dollarteken ($), backtick ('), afbreekstreepje (-) en onderstrepingsteken (_). Zie de MySQL-communitydocumentatie voor meer informatie.
Een programmeertaal kan lidkenmerken definiëren die speciale tekens bevatten die worden ondersteund. C# heeft bijvoorbeeld enkele beperkingen voor het definiëren van variabelen.
Anders kunt u gebruiken JObject voor de uitvoerbinding die alle speciale tekens omvat. U kunt een gedetailleerd voorbeeld volgen op GitHub.
Gebruik
De CommandText eigenschap is de naam van de tabel waarin de gegevens worden opgeslagen. De naam van de verbindingsreeksinstelling komt overeen met de toepassingsinstelling die de verbindingsreeks bevat met Azure Database for MySQL.
Als er een uitzondering optreedt wanneer een MySQL-invoerbinding wordt uitgevoerd, wordt de functiecode niet uitgevoerd. Het resultaat kan een foutcode zijn, zoals een HTTP-trigger die een 500-foutcode retourneert.