Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Po uruchomieniu funkcji powiązanie wejściowe usługi Azure Database for MySQL pobiera dane z bazy danych i przekazuje je do parametru wejściowego funkcji.
Aby uzyskać informacje na temat konfiguracji i konfiguracji, zobacz omówienie.
Ważne
W tym artykule są używane karty do obsługi wielu wersji modelu programowania Node.js. Model w wersji 4 jest ogólnie dostępny i ma bardziej elastyczne i intuicyjne środowisko dla deweloperów języka JavaScript i Języka TypeScript. Aby uzyskać więcej informacji na temat sposobu działania modelu w wersji 4, zapoznaj się z przewodnikiem dewelopera dotyczącym usługi Azure Functions Node.js. Aby dowiedzieć się więcej o różnicach między wersjami 3 i v4, zapoznaj się z przewodnikiem migracji.
Przykłady
Funkcję języka C# można utworzyć przy użyciu jednego z następujących trybów języka C#:
- Model izolowanego procesu roboczego: skompilowana funkcja języka C#, która jest uruchamiana w procesie roboczym izolowanym od środowiska uruchomieniowego. Proces izolowanego procesu roboczego jest wymagany do obsługi funkcji języka C# działających w długoterminowych wersjach pomocy technicznej (LTS) i innych niż LTS dla platformy .NET i programu .NET Framework.
- Model przetwarzania: skompilowana funkcja języka C#, która działa w tym samym procesie co środowisko uruchomieniowe usługi Azure Functions.
- Skrypt języka C#: używany głównie podczas tworzenia funkcji języka C# w witrynie Azure Portal.
Więcej przykładów dla powiązania wejściowego usługi Azure Database for MySQL jest dostępnych w repozytorium GitHub.
Ta sekcja zawiera następujące przykłady:
- Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania
- Wyzwalacz HTTP, pobieranie wielu wierszy z danych trasy
- Wyzwalacz HTTP, usuwanie wierszy
Przykłady odnoszą się do Product
klasy i odpowiedniej tabeli bazy danych:
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
);
Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania
W poniższym przykładzie pokazano funkcję języka C#, która pobiera pojedynczy rekord. Funkcja jest wyzwalana przez żądanie HTTP, które używa ciągu zapytania do określenia identyfikatora. Ten identyfikator służy do pobierania rekordu Product
z określonym zapytaniem.
Uwaga
Parametr ciągu zapytania HTTP uwzględnia wielkość liter.
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;
}
}
}
Wyzwalacz HTTP, pobieranie wielu wierszy z parametru trasy
W poniższym przykładzie przedstawiono funkcję języka C# , która pobiera wiersze zwrócone przez zapytanie. Funkcja jest wyzwalana przez żądanie HTTP, które używa danych trasy do określenia wartości parametru zapytania. Ten parametr służy do filtrowania Product
rekordów w określonym zapytaniu.
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;
}
}
}
Wyzwalacz HTTP, usuwanie wierszy
W poniższym przykładzie pokazano funkcję języka C# , która wykonuje procedurę składowaną z danymi wejściowymi z parametru zapytania żądania HTTP.
Procedura DeleteProductsCost
składowana musi zostać utworzona w bazie danych MySQL. W tym przykładzie procedura składowana usuwa pojedynczy rekord lub wszystkie rekordy w zależności od wartości parametru.
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);
}
}
}
Więcej przykładów dla powiązania wejściowego usługi Azure Database for MySQL jest dostępnych w repozytorium GitHub.
Ta sekcja zawiera następujące przykłady:
- Wyzwalacz HTTP, pobieranie wielu wierszy
- Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania
- Wyzwalacz HTTP, usuwanie wierszy
Przykłady odnoszą się do Product
klasy i odpowiedniej tabeli bazy danych:
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
);
Wyzwalacz HTTP, pobieranie wielu wierszy
W poniższym przykładzie przedstawiono powiązanie wejściowe usługi Azure Database for MySQL w funkcji Języka Java wyzwalanej przez żądanie HTTP. Powiązanie odczytuje zapytanie i zwraca wyniki w odpowiedzi 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();
}
}
Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania
W poniższym przykładzie przedstawiono powiązanie wejściowe usługi Azure Database for MySQL w funkcji Języka Java wyzwalanej przez żądanie HTTP. Powiązanie odczytuje zapytanie filtrowane według parametru z ciągu zapytania i zwraca wiersz w odpowiedzi 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();
}
}
Wyzwalacz HTTP, usuwanie wierszy
W poniższym przykładzie przedstawiono powiązanie wejściowe usługi Azure Database for MySQL w funkcji Języka Java wyzwalanej przez żądanie HTTP. Powiązanie wykonuje procedurę składowaną z danymi wejściowymi z parametru zapytania żądania HTTP.
Procedura DeleteProductsCost
składowana musi zostać utworzona w bazie danych. W tym przykładzie procedura składowana usuwa pojedynczy rekord lub wszystkie rekordy w zależności od wartości parametru.
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();
}
}
Więcej przykładów dla powiązania wejściowego usługi Azure Database for MySQL jest dostępnych w repozytorium GitHub.
Ta sekcja zawiera następujące przykłady:
- Wyzwalacz HTTP, pobieranie wielu wierszy
- Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania
- Wyzwalacz HTTP, usuwanie wierszy
Przykłady odnoszą się do tabeli bazy danych:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
Wyzwalacz HTTP, pobieranie wielu wierszy
W poniższym przykładzie przedstawiono powiązanie wejściowe usługi Azure Database for MySQL wyzwalane przez żądanie HTTP. Powiązanie odczytuje zapytanie i zwraca wyniki w odpowiedzi 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
};
}
});
Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania
W poniższym przykładzie przedstawiono powiązanie wejściowe usługi Azure Database for MySQL wyzwalane przez żądanie HTTP. Powiązanie odczytuje zapytanie filtrowane według parametru z ciągu zapytania i zwraca wiersz w odpowiedzi 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
};
}
});
Wyzwalacz HTTP, usuwanie wierszy
W poniższym przykładzie przedstawiono powiązanie wejściowe usługi Azure Database for MySQL wyzwalane przez żądanie HTTP. Powiązanie wykonuje procedurę składowaną z danymi wejściowymi z parametru zapytania żądania HTTP.
Procedura DeleteProductsCost
składowana musi zostać utworzona w bazie danych. W tym przykładzie procedura składowana usuwa pojedynczy rekord lub wszystkie rekordy w zależności od wartości parametru.
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
};
}
});
Więcej przykładów dla powiązania wejściowego usługi Azure Database for MySQL jest dostępnych w repozytorium GitHub.
Ta sekcja zawiera następujące przykłady:
- Wyzwalacz HTTP, pobieranie wielu wierszy
- Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania
- Wyzwalacz HTTP, usuwanie wierszy
Przykłady odnoszą się do tabeli bazy danych:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
Wyzwalacz HTTP, pobieranie wielu wierszy
Poniższy przykład przedstawia powiązanie wejściowe usługi Azure Database for MySQL w pliku function.json i funkcję programu PowerShell wyzwalającą żądanie HTTP. Powiązanie odczytuje zapytanie i zwraca wyniki w odpowiedzi HTTP.
W poniższym przykładzie przedstawiono powiązanie danych w pliku 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
}
W sekcji Konfiguracja opisano te właściwości.
Poniższy przykład to przykładowy kod programu PowerShell dla funkcji w pliku 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
})
Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania
Poniższy przykład przedstawia powiązanie wejściowe usługi Azure Database for MySQL w funkcji programu PowerShell wyzwalanej przez żądanie HTTP. Powiązanie odczytuje zapytanie filtrowane według parametru z ciągu zapytania i zwraca wiersz w odpowiedzi HTTP.
W poniższym przykładzie przedstawiono powiązanie danych w pliku 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
}
W sekcji Konfiguracja opisano te właściwości.
Poniższy przykład to przykładowy kod programu PowerShell dla funkcji w pliku 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
})
Wyzwalacz HTTP, usuwanie wierszy
Poniższy przykład przedstawia powiązanie wejściowe usługi Azure Database for MySQL w pliku function.json i funkcję programu PowerShell wyzwalającą żądanie HTTP. Powiązanie wykonuje procedurę składowaną z danymi wejściowymi z parametru zapytania żądania HTTP.
Procedura DeleteProductsCost
składowana musi zostać utworzona w bazie danych. W tym przykładzie procedura składowana usuwa pojedynczy rekord lub wszystkie rekordy w zależności od wartości parametru.
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
}
W sekcji Konfiguracja opisano te właściwości.
Poniższy przykład to przykładowy kod programu PowerShell dla funkcji w pliku 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
}
Więcej przykładów dla powiązania wejściowego usługi Azure Database for MySQL jest dostępnych w repozytorium GitHub.
Ta sekcja zawiera następujące przykłady:
- Wyzwalacz HTTP, pobieranie wielu wierszy
- Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania
- Wyzwalacz HTTP, usuwanie wierszy
Przykłady odnoszą się do tabeli bazy danych:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
Uwaga
Musisz użyć usługi Azure Functions w wersji 1.22.0b4 dla języka Python.
Wyzwalacz HTTP, pobieranie wielu wierszy
Poniższy przykład przedstawia powiązanie wejściowe usługi Azure Database for MySQL w pliku function.json i funkcję języka Python wyzwalającą żądanie HTTP. Powiązanie odczytuje zapytanie i zwraca wyniki w odpowiedzi HTTP.
Poniższy przykład to przykładowy kod języka Python dla pliku 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"
)
Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania
Poniższy przykład przedstawia powiązanie wejściowe usługi Azure Database for MySQL w funkcji języka Python wyzwalanej przez żądanie HTTP. Powiązanie odczytuje zapytanie filtrowane według parametru z ciągu zapytania i zwraca wiersz w odpowiedzi HTTP.
Poniższy przykład to przykładowy kod języka Python dla pliku 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"
)
Wyzwalacz HTTP, usuwanie wierszy
Poniższy przykład przedstawia powiązanie wejściowe usługi Azure Database for MySQL w pliku function.json i funkcję języka Python wyzwalającą żądanie HTTP. Powiązanie wykonuje procedurę składowaną z danymi wejściowymi z parametru zapytania żądania HTTP.
Procedura DeleteProductsCost
składowana musi zostać utworzona w bazie danych. W tym przykładzie procedura składowana usuwa pojedynczy rekord lub wszystkie rekordy w zależności od wartości parametru.
DROP PROCEDURE IF EXISTS DeleteProductsCost;
Create Procedure DeleteProductsCost(cost INT)
BEGIN
DELETE from Products where Products.cost = cost;
END
Poniższy przykład to przykładowy kod języka Python dla pliku 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"
)
Atrybuty
Biblioteka języka C# używa atrybutu MySqlAttribute
do deklarowania powiązań MySQL w funkcji. Atrybut ma następujące właściwości:
Właściwość atrybutu | opis |
---|---|
CommandText |
Wymagany. Polecenie zapytania MySQL lub nazwa procedury składowanej wykonywanej przez powiązanie. |
ConnectionStringSetting |
Wymagany. Nazwa ustawienia aplikacji zawierającego parametry połączenia dla bazy danych, dla której jest wykonywane zapytanie lub procedura składowana. Ta wartość nie jest rzeczywistą parametry połączenia i zamiast tego musi zostać rozpoznana jako nazwa zmiennej środowiskowej. |
CommandType |
Wymagany.
CommandType Wartość, która jest Text dla zapytania i StoredProcedure dla procedury składowanej. |
Parameters |
Opcjonalny. Zero lub więcej wartości parametrów przekazanych do polecenia podczas wykonywania jako pojedynczy ciąg. Musi być zgodny z formatem @param1=param1,@param2=param2 . Nazwa parametru i wartość parametru nie mogą zawierać przecinka (, ) ani znaku równości (= ). |
Adnotacje
W bibliotece środowiska uruchomieniowego funkcji Języka Java użyj @MySQLInput
adnotacji dotyczącej parametrów, których wartości pochodzą z usługi Azure Database for MySQL. Ta adnotacja obsługuje następujące elementy:
Składnik | opis |
---|---|
commandText |
Wymagany. Polecenie zapytania MySQL lub nazwa procedury składowanej wykonywanej przez powiązanie. |
connectionStringSetting |
Wymagany. Nazwa ustawienia aplikacji zawierającego parametry połączenia dla bazy danych, dla której jest wykonywane zapytanie lub procedura składowana. Ta wartość nie jest rzeczywistą parametry połączenia i zamiast tego musi zostać rozpoznana jako nazwa zmiennej środowiskowej. |
commandType |
Wymagany.
CommandType Wartość, która jest Text dla zapytania i StoredProcedure dla procedury składowanej. |
name |
Wymagany. Unikatowa nazwa powiązania funkcji. |
parameters |
Opcjonalny. Zero lub więcej wartości parametrów przekazanych do polecenia podczas wykonywania jako pojedynczy ciąg. Musi być zgodny z formatem @param1=param1,@param2=param2 . Nazwa parametru i wartość parametru nie mogą zawierać przecinka (, ) ani znaku równości (= ). |
Konfigurowanie
W poniższej tabeli opisano właściwości, które można ustawić dla options
obiektu przekazanego input.generic()
do metody :
Właściwości | opis |
---|---|
commandText |
Wymagany. Polecenie zapytania MySQL lub nazwa procedury składowanej wykonywanej przez powiązanie. |
connectionStringSetting |
Wymagany. Nazwa ustawienia aplikacji zawierającego parametry połączenia dla bazy danych, dla której jest wykonywane zapytanie lub procedura składowana. Ta wartość nie jest rzeczywistą parametry połączenia i zamiast tego musi zostać rozpoznana jako nazwa zmiennej środowiskowej. Opcjonalne słowa kluczowe w wartości parametry połączenia są dostępne do uściślania łączności powiązań MySQL. |
commandType |
Wymagany.
CommandType Wartość, która jest Text dla zapytania i StoredProcedure dla procedury składowanej. |
parameters |
Opcjonalny. Zero lub więcej wartości parametrów przekazanych do polecenia podczas wykonywania jako pojedynczy ciąg. Musi być zgodny z formatem @param1=param1,@param2=param2 . Nazwa parametru i wartość parametru nie mogą zawierać przecinka (, ) ani znaku równości (= ). |
Konfigurowanie
W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json:
Właściwości | opis |
---|---|
type |
Wymagany. Musi być ustawiona wartość mysql . |
direction |
Wymagany. Musi być ustawiona wartość in . |
name |
Wymagany. Nazwa zmiennej reprezentującej zapytanie powoduje wyświetlenie kodu funkcji. |
commandText |
Wymagany. Polecenie zapytania MySQL lub nazwa procedury składowanej wykonywanej przez powiązanie. |
connectionStringSetting |
Wymagany. Nazwa ustawienia aplikacji zawierającego parametry połączenia dla bazy danych, dla której jest wykonywane zapytanie lub procedura składowana. Ta wartość nie jest rzeczywistą parametry połączenia i zamiast tego musi zostać rozpoznana jako nazwa zmiennej środowiskowej. Opcjonalne słowa kluczowe w wartości parametry połączenia są dostępne do uściślania łączności powiązań MySQL. |
commandType |
Wymagany.
CommandType Wartość, która jest Text dla zapytania i StoredProcedure dla procedury składowanej. |
parameters |
Opcjonalny. Zero lub więcej wartości parametrów przekazanych do polecenia podczas wykonywania jako pojedynczy ciąg. Musi być zgodny z formatem @param1=param1,@param2=param2 . Nazwa parametru i wartość parametru nie mogą zawierać przecinka (, ) ani znaku równości (= ). |
Podczas tworzenia aplikacji lokalnie dodaj ustawienia aplikacji w pliku local.settings.json w kolekcji Values
.
Użycie
Konstruktor atrybutu przyjmuje tekst polecenia MySQL, typ polecenia, parametry i nazwę ustawienia parametrów połączenia. Polecenie może być zapytaniem MySQL z typem System.Data.CommandType.Text
polecenia lub nazwą procedury składowanej o typie System.Data.CommandType.StoredProcedure
polecenia . Nazwa ustawienia parametrów połączenia odpowiada ustawieniu aplikacji (w local.settings.json programowania lokalnego), które zawiera parametry połączenia z usługą Azure Database for MySQL.
Jeśli wystąpi wyjątek podczas wykonywania powiązania wejściowego usługi Azure Database for MySQL, kod funkcji przestanie działać. Wynikiem może być kod błędu, taki jak wyzwalacz HTTP, który zwraca kod błędu 500.