Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Você pode usar o Banco de Dados do Azure para associação de saída MySQL para gravar em um banco de dados.
Para obter informações sobre instalação e configuração, consulte a visão geral.
Importante
Este artigo usa guias para oferecer suporte a várias versões do modelo de programação Node.js. O modelo v4 está geralmente disponível e foi projetado para ter uma experiência mais flexível e intuitiva para desenvolvedores JavaScript e TypeScript. Para obter mais detalhes sobre como o modelo v4 funciona, consulte o Guia do desenvolvedor do Azure Functions Node.js. Para saber mais sobre as diferenças entre v3 e v4, consulte o guia de migração.
Exemplos
Você pode criar uma função C# usando um dos seguintes modos C#:
- Modelo de trabalho isolado: função C# compilada que é executada em um processo de trabalho isolado do tempo de execução. Um processo de trabalho isolado é necessário para dar suporte a funções C# executadas em versões LTS (long-term support) e não-LTS para .NET e .NET Framework.
- Modelo em processo: função C# compilada que é executada no mesmo processo que o tempo de execução do Azure Functions.
- Script C#: usado principalmente quando você cria funções C# no portal do Azure.
Importante
O suporte para o modelo em processo terminará em 10 de novembro de 2026. É altamente recomendável que você migre seus aplicativos para o modelo de trabalho isolado para obter suporte total.
Mais exemplos para a vinculação de saída do Banco de Dados do Azure para MySQL estão disponíveis no repositório GitHub.
Esta seção contém o seguinte exemplo:
O exemplo refere-se a uma Product classe e uma tabela de banco de dados correspondente:
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
);
Gatilho HTTP, gravar um registro
O exemplo a seguir mostra uma função C# que adiciona um registro a um banco de dados, usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON.
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);
}
}
}
Mais exemplos para a vinculação de saída do Banco de Dados do Azure para MySQL estão disponíveis no repositório GitHub.
Esta seção contém o seguinte exemplo:
O exemplo refere-se a uma Product classe e uma tabela de banco de dados correspondente:
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
);
Gatilho HTTP, gravar um registro em uma tabela
O exemplo a seguir mostra uma ligação de saída do Banco de Dados do Azure para MySQL em uma função Java que adiciona um registro a uma tabela, usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON. A função usa uma dependência adicional da biblioteca com.google.code.gson para analisar o corpo JSON.
<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();
}
}
Mais exemplos para a vinculação de saída do Banco de Dados do Azure para MySQL estão disponíveis no repositório GitHub.
Esta seção contém o seguinte exemplo:
O exemplo refere-se a uma tabela de banco de dados:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
Gatilho HTTP, gravar registros em uma tabela
O exemplo a seguir mostra uma associação de saída do Banco de Dados do Azure para MySQL que adiciona registros a uma tabela, usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON.
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)
};
}
});
Mais exemplos para a vinculação de saída do Banco de Dados do Azure para MySQL estão disponíveis no repositório GitHub.
Esta seção contém o seguinte exemplo:
O exemplo refere-se a uma tabela de banco de dados:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
Gatilho HTTP, gravar registros em uma tabela
O exemplo a seguir mostra uma ligação de saída do Banco de Dados do Azure para MySQL em um arquivo function.json e uma função do PowerShell que adiciona registros a uma tabela, usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON.
O exemplo a seguir é a vinculação de dados no arquivo function.json:
{
"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
}
A seção Configuração explica essas propriedades.
O exemplo a seguir é um exemplo de código do PowerShell para a função no arquivo run.ps1:
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
})
Mais exemplos para a vinculação de saída do Banco de Dados do Azure para MySQL estão disponíveis no repositório GitHub.
Esta seção contém o seguinte exemplo:
O exemplo refere-se a uma tabela de banco de dados:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
Nota
Você deve usar o Azure Functions versão 1.22.0b4 para Python.
Gatilho HTTP, gravar registros em uma tabela
O exemplo a seguir mostra uma ligação de saída do Banco de Dados do Azure para MySQL em um arquivo function.json e uma função Python que adiciona registros a uma tabela, usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON.
O exemplo a seguir é um exemplo de código Python para o arquivo function_app.py:
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"
)
Atributos
A biblioteca C# usa o MySqlAttribute atributo para declarar as ligações do MySQL na função, que tem as seguintes propriedades:
| Propriedade Attribute | Descrição |
|---|---|
CommandText |
Obrigatório. O nome da tabela na qual a associação grava. |
ConnectionStringSetting |
Obrigatório. O nome de uma configuração de aplicativo que contém a cadeia de conexão para o banco de dados no qual os dados são gravados. Esse valor não é a cadeia de conexão real e, em vez disso, deve ser resolvido para uma variável de ambiente. |
Anotações
Na biblioteca de tempo de execução de funções Java, use a @MySQLOutput anotação em parâmetros cujo valor viria do Banco de Dados do Azure para MySQL. Esta anotação suporta os seguintes elementos:
| Elemento | Descrição |
|---|---|
commandText |
Obrigatório. O nome da tabela na qual a associação grava. |
connectionStringSetting |
Obrigatório. O nome de uma configuração de aplicativo que contém a cadeia de conexão para o banco de dados no qual os dados são gravados. Esse valor não é a cadeia de conexão real e, em vez disso, deve ser resolvido para uma variável de ambiente. |
name |
Obrigatório. O nome exclusivo da ligação de função. |
Configuração
A tabela a seguir explica as propriedades que você pode definir no options objeto passado para o output.generic() método:
| Propriedade | Descrição |
|---|---|
commandText |
Obrigatório. O nome da tabela na qual a associação grava. |
connectionStringSetting |
Obrigatório. O nome de uma configuração de aplicativo que contém a cadeia de conexão para o banco de dados no qual os dados são gravados. Esse valor não é a cadeia de conexão real e, em vez disso, deve ser resolvido para uma variável de ambiente. |
Configuração
A tabela a seguir explica as propriedades de configuração de associação definidas no arquivo function.json:
| Propriedade | Descrição |
|---|---|
type |
Obrigatório. Deve ser definido como Mysql. |
direction |
Obrigatório. Deve ser definido como out. |
name |
Obrigatório. O nome da variável que representa a entidade no código da função. |
commandText |
Obrigatório. O nome da tabela na qual a associação grava. |
connectionStringSetting |
Obrigatório. O nome de uma configuração de aplicativo que contém a cadeia de conexão para o banco de dados no qual os dados são gravados. Esse valor não é a cadeia de conexão real e, em vez disso, deve ser resolvido para uma variável de ambiente. |
Quando estiver desenvolvendo localmente, adicione as configurações do aplicativo no arquivo local.settings.json na Values coleção.
Nota
A ligação de saída suporta todos os caracteres especiais, incluindo cifrão ($), backtick ('), hífen (-) e sublinhado (_). Para obter mais informações, consulte a documentação da comunidade MySQL.
Uma linguagem de programação pode definir atributos de membro que contenham caracteres especiais suportados. Por exemplo, C# tem algumas limitações para definir variáveis.
Caso contrário, você pode usar JObject para a associação de saída que abrange todos os caracteres especiais. Você pode seguir um exemplo detalhado no GitHub.
Utilização
A CommandText propriedade é o nome da tabela onde os dados são armazenados. O nome da configuração da cadeia de conexão corresponde à configuração do aplicativo que contém a cadeia de conexão com o Banco de Dados do Azure para MySQL.
Se ocorrer uma exceção quando uma ligação de entrada do MySQL for executada, o código da função não será executado. O resultado pode ser um código de erro, como um gatilho HTTP que retorna um código de erro 500.