Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn eine Funktion ausgeführt wird, ruft die Azure-Datenbank für MySQL-Eingabebindung Daten aus einer Datenbank ab und übergibt sie an den Eingabeparameter der Funktion.
Informationen zur Einrichtung und Konfiguration finden Sie in der Übersicht.
Wichtig
In diesem Artikel werden Registerkarten verwendet, um mehrere Versionen des Node.js-Programmiermodells zu unterstützen. Das v4-Modell ist allgemein verfügbar und bietet JavaScript- und TypeScript-Entwicklern eine flexiblere und intuitivere Erfahrung. Weitere Informationen zur Funktionsweise des v4-Modells finden Sie im Azure Functions Node.js-Entwicklerhandbuch. Weitere Informationen zu den Unterschieden zwischen v3 und v4 finden Sie im Migrationshandbuch.
Beispiele
Sie können eine C#-Funktion mit einem der folgenden C#-Modi erstellen:
- Isoliertes Workermodell: Kompilierte C#-Funktion, die in einem Workerprozess ausgeführt wird, der von der Runtime isoliert ist. Ein isolierter Arbeitsprozess ist erforderlich, um C#-Funktionen zu unterstützen, die auf long-term support (LTS) und nicht-LTS-Versionen für .NET und .NET Framework ausgeführt werden.
- In-Process-Modell: Kompilierte C#-Funktion, die im gleichen Prozess wie die Azure Functions-Laufzeit ausgeführt wird.
- C#-Skript: Wird hauptsächlich beim Erstellen von C#-Funktionen im Azure-Portal verwendet.
Weitere Beispiele für die Azure-Datenbank für MySQL-Eingabebindung sind im GitHub-Repository verfügbar.
Dieser Abschnitt enthält folgende Beispiele:
- HTTP-Trigger, Abrufen einer Zeile nach ID aus einer Abfragezeichenfolge
- HTTP-Trigger, mehrere Zeilen aus Routendaten abrufen
- HTTP-Trigger, Zeilen löschen
Die Beispiele beziehen sich auf eine Product-Klasse und eine entsprechende Datenbanktabelle:
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, Abrufen einer Zeile nach ID aus einer Abfragezeichenfolge
Das folgende Beispiel zeigt eine C#-Funktion, die einen einzelnen Datensatz abruft. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Abfragezeichenfolge verwendet, um die ID anzugeben. Diese ID wird verwendet, um einen Datensatz Product mit der angegebenen Abfrage abzurufen.
Hinweis
Beim Wert für den HTTP-Abfragezeichenfolge-Parameter muss die Groß-/Kleinschreibung beachtet werden.
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, Abrufen mehrerer Zeilen aus einem Routenparameter
Das folgende Beispiel zeigt eine C#-Funktion , die Zeilen abruft, die von der Abfrage zurückgegeben wurden. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die Routendaten verwendet, um den Wert eines Abfrageparameters anzugeben. Dieser Parameter wird verwendet, um die Datensätze Product in der angegebenen Abfrage zu filtern.
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, Zeilen löschen
Das folgende Beispiel zeigt eine C#-Funktion , die eine gespeicherte Prozedur mit Eingaben aus dem Abfrageparameter der HTTP-Anforderung ausführt.
Die gespeicherte Prozedur DeleteProductsCost muss in der MySQL-Datenbank erstellt werden. In diesem Beispiel löscht die gespeicherte Prozedur je nach Wert des Parameters einen einzelnen Datensatz oder alle Datensätze.
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);
}
}
}
Weitere Beispiele für die Azure-Datenbank für MySQL-Eingabebindung sind im GitHub-Repository verfügbar.
Dieser Abschnitt enthält folgende Beispiele:
- HTTP-Trigger, mehrere Zeilen abrufen
- HTTP-Trigger, Abrufen einer Zeile nach ID aus einer Abfragezeichenfolge
- HTTP-Trigger, Zeilen löschen
Die Beispiele beziehen sich auf eine Product-Klasse und eine entsprechende Datenbanktabelle:
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, mehrere Zeilen abrufen
Das folgende Beispiel zeigt eine Azure-Datenbank für MySQL-Eingabebindung in einer Java-Funktion, die von einer HTTP-Anforderung ausgelöst wird. Die Bindung liest aus einer Abfrage und gibt die Ergebnisse in der HTTP-Antwort zurück.
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, Abrufen einer Zeile nach ID aus einer Abfragezeichenfolge
Das folgende Beispiel zeigt eine Azure-Datenbank für MySQL-Eingabebindung in einer Java-Funktion, die von einer HTTP-Anforderung ausgelöst wird. Die Bindung liest aus einer Abfrage, die nach einem Parameter aus der Abfragezeichenfolge gefiltert wird, und gibt die Zeile in der HTTP-Antwort zurück.
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, Zeilen löschen
Das folgende Beispiel zeigt eine Azure-Datenbank für MySQL-Eingabebindung in einer Java-Funktion, die von einer HTTP-Anforderung ausgelöst wird. Die Bindung führt eine gespeicherte Prozedur mit Eingaben aus dem Abfrageparameter der HTTP-Anforderung aus.
Die gespeicherte Prozedur DeleteProductsCost muss in der Datenbank erstellt werden. In diesem Beispiel löscht die gespeicherte Prozedur je nach Wert des Parameters einen einzelnen Datensatz oder alle Datensätze.
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();
}
}
Weitere Beispiele für die Azure-Datenbank für MySQL-Eingabebindung sind im GitHub-Repository verfügbar.
Dieser Abschnitt enthält folgende Beispiele:
- HTTP-Trigger, mehrere Zeilen abrufen
- HTTP-Trigger, Abrufen einer Zeile nach ID aus einer Abfragezeichenfolge
- HTTP-Trigger, Zeilen löschen
Die Beispiele beziehen sich auf eine Datenbanktabelle:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
HTTP-Trigger, mehrere Zeilen abrufen
Das folgende Beispiel zeigt eine Azure-Datenbank für MySQL-Eingabebindung, die von einer HTTP-Anforderung ausgelöst wird. Die Bindung liest aus einer Abfrage und gibt die Ergebnisse in der HTTP-Antwort zurück.
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, Abrufen einer Zeile nach ID aus einer Abfragezeichenfolge
Das folgende Beispiel zeigt eine Azure-Datenbank für MySQL-Eingabebindung, die von einer HTTP-Anforderung ausgelöst wird. Die Bindung liest aus einer Abfrage, die nach einem Parameter aus der Abfragezeichenfolge gefiltert wird, und gibt die Zeile in der HTTP-Antwort zurück.
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, Zeilen löschen
Das folgende Beispiel zeigt eine Azure-Datenbank für MySQL-Eingabebindung, die von einer HTTP-Anforderung ausgelöst wird. Die Bindung führt eine gespeicherte Prozedur mit Eingaben aus dem Abfrageparameter der HTTP-Anforderung aus.
Die gespeicherte Prozedur DeleteProductsCost muss in der Datenbank erstellt werden. In diesem Beispiel löscht die gespeicherte Prozedur je nach Wert des Parameters einen einzelnen Datensatz oder alle Datensätze.
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
};
}
});
Weitere Beispiele für die Azure-Datenbank für MySQL-Eingabebindung sind im GitHub-Repository verfügbar.
Dieser Abschnitt enthält folgende Beispiele:
- HTTP-Trigger, mehrere Zeilen abrufen
- HTTP-Trigger, Abrufen einer Zeile nach ID aus einer Abfragezeichenfolge
- HTTP-Trigger, Zeilen löschen
Die Beispiele beziehen sich auf eine Datenbanktabelle:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
HTTP-Trigger, mehrere Zeilen abrufen
Das folgende Beispiel zeigt eine Azure-Datenbank für MySQL-Eingabebindung in einer function.json Datei und eine PowerShell-Funktion, die eine HTTP-Anforderung auslöst. Die Bindung liest aus einer Abfrage und gibt die Ergebnisse in der HTTP-Antwort zurück.
Das folgende Beispiel bindet Daten in der Datei 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
}
Im Abschnitt "Konfiguration" werden diese Eigenschaften erläutert.
Das folgende Beispiel ist PowerShell-Beispielcode für die Funktion in der datei 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
})
HTTP-Trigger, Abrufen einer Zeile nach ID aus einer Abfragezeichenfolge
Das folgende Beispiel zeigt eine Azure-Datenbank für MySQL-Eingabebindung in einer PowerShell-Funktion, die von einer HTTP-Anforderung ausgelöst wird. Die Bindung liest aus einer Abfrage, die nach einem Parameter aus der Abfragezeichenfolge gefiltert wird, und gibt die Zeile in der HTTP-Antwort zurück.
Das folgende Beispiel bindet Daten in der Datei 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
}
Im Abschnitt "Konfiguration" werden diese Eigenschaften erläutert.
Das folgende Beispiel ist PowerShell-Beispielcode für die Funktion in der datei 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
})
HTTP-Trigger, Zeilen löschen
Das folgende Beispiel zeigt eine Azure-Datenbank für MySQL-Eingabebindung in einer function.json Datei und eine PowerShell-Funktion, die eine HTTP-Anforderung auslöst. Die Bindung führt eine gespeicherte Prozedur mit Eingaben aus dem Abfrageparameter der HTTP-Anforderung aus.
Die gespeicherte Prozedur DeleteProductsCost muss in der Datenbank erstellt werden. In diesem Beispiel löscht die gespeicherte Prozedur je nach Wert des Parameters einen einzelnen Datensatz oder alle Datensätze.
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
}
Im Abschnitt "Konfiguration" werden diese Eigenschaften erläutert.
Das folgende Beispiel ist PowerShell-Beispielcode für die Funktion in der datei 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
}
Weitere Beispiele für die Azure-Datenbank für MySQL-Eingabebindung sind im GitHub-Repository verfügbar.
Dieser Abschnitt enthält folgende Beispiele:
- HTTP-Trigger, mehrere Zeilen abrufen
- HTTP-Trigger, Abrufen einer Zeile nach ID aus einer Abfragezeichenfolge
- HTTP-Trigger, Zeilen löschen
Die Beispiele beziehen sich auf eine Datenbanktabelle:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
Hinweis
Sie müssen Azure Functions Version 1.22.0b4 für Python verwenden.
HTTP-Trigger, mehrere Zeilen abrufen
Das folgende Beispiel zeigt eine Azure-Datenbank für MySQL-Eingabebindung in einer function.json Datei und eine Python-Funktion, die eine HTTP-Anforderung auslöst. Die Bindung liest aus einer Abfrage und gibt die Ergebnisse in der HTTP-Antwort zurück.
Das folgende Beispiel ist Python-Beispielcode für die function_app.py-Datei:
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, Abrufen einer Zeile nach ID aus einer Abfragezeichenfolge
Das folgende Beispiel zeigt eine Azure-Datenbank für MySQL-Eingabebindung in einer Python-Funktion, die von einer HTTP-Anforderung ausgelöst wird. Die Bindung liest aus einer Abfrage, die nach einem Parameter aus der Abfragezeichenfolge gefiltert wird, und gibt die Zeile in der HTTP-Antwort zurück.
Das folgende Beispiel ist Python-Beispielcode für die function_app.py-Datei:
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, Zeilen löschen
Das folgende Beispiel zeigt eine Azure-Datenbank für MySQL-Eingabebindung in einer function.json Datei und eine Python-Funktion, die eine HTTP-Anforderung auslöst. Die Bindung führt eine gespeicherte Prozedur mit Eingaben aus dem Abfrageparameter der HTTP-Anforderung aus.
Die gespeicherte Prozedur DeleteProductsCost muss in der Datenbank erstellt werden. In diesem Beispiel löscht die gespeicherte Prozedur je nach Wert des Parameters einen einzelnen Datensatz oder alle Datensätze.
DROP PROCEDURE IF EXISTS DeleteProductsCost;
Create Procedure DeleteProductsCost(cost INT)
BEGIN
DELETE from Products where Products.cost = cost;
END
Das folgende Beispiel ist Python-Beispielcode für die function_app.py-Datei:
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"
)
Attribute
Die C#-Bibliothek verwendet das MySqlAttribute Attribut, um die MySQL-Bindungen für die Funktion zu deklarieren. Das Attribut weist die folgenden Eigenschaften auf:
| Attributeigenschaft | BESCHREIBUNG |
|---|---|
CommandText |
Erforderlich. Der MySQL-Abfragebefehl oder der Name der gespeicherten Prozedur, die von der Bindung ausgeführt wird. |
ConnectionStringSetting |
Erforderlich. Der Name einer App-Einstellung, die die Verbindungszeichenfolge für die Datenbank enthält, für die die Abfrage oder gespeicherte Prozedur ausgeführt wird. Dieser Wert ist nicht die tatsächliche Verbindungszeichenfolge und muss stattdessen in den Namen einer Umgebungsvariablen aufgelöst werden. |
CommandType |
Erforderlich. Ein CommandType Wert, der für eine Abfrage und Text für eine gespeicherte Prozedur giltStoredProcedure. |
Parameters |
Wahlfrei. Null oder mehr Parameterwerte, die während der Ausführung als einzelne Zeichenfolge an den Befehl übergeben werden. Muss dem Format @param1=param1,@param2=param2 folgen. Der Parametername und der Parameterwert dürfen kein Komma () oder ein Gleichheitszeichen (,) enthalten=. |
Anmerkungen
Verwenden Sie in der Java-Funktionslaufzeitbibliothek die @MySQLInput Anmerkung für Parameter, deren Werte aus der Azure-Datenbank für MySQL stammen. Diese Anmerkung unterstützt die folgenden Elemente:
| Element | BESCHREIBUNG |
|---|---|
commandText |
Erforderlich. Der MySQL-Abfragebefehl oder der Name der gespeicherten Prozedur, die von der Bindung ausgeführt wird. |
connectionStringSetting |
Erforderlich. Der Name einer App-Einstellung, die die Verbindungszeichenfolge für die Datenbank enthält, für die die Abfrage oder gespeicherte Prozedur ausgeführt wird. Dieser Wert ist nicht die tatsächliche Verbindungszeichenfolge und muss stattdessen in den Namen einer Umgebungsvariablen aufgelöst werden. |
commandType |
Erforderlich. Ein CommandType Wert, der für eine Abfrage und Text für eine gespeicherte Prozedur giltStoredProcedure. |
name |
Erforderlich. Der eindeutige Name der Funktionsbindung. |
parameters |
Wahlfrei. Null oder mehr Parameterwerte, die während der Ausführung als einzelne Zeichenfolge an den Befehl übergeben werden. Muss dem Format @param1=param1,@param2=param2 folgen. Der Parametername und der Parameterwert dürfen kein Komma () oder ein Gleichheitszeichen (,) enthalten=. |
Konfiguration
In der folgenden Tabelle werden die Eigenschaften erläutert, die Sie für das options an die input.generic() Methode übergebene Objekt festlegen können:
| Eigenschaft | BESCHREIBUNG |
|---|---|
commandText |
Erforderlich. Der MySQL-Abfragebefehl oder der Name der gespeicherten Prozedur, die von der Bindung ausgeführt wird. |
connectionStringSetting |
Erforderlich. Der Name einer App-Einstellung, die die Verbindungszeichenfolge für die Datenbank enthält, für die die Abfrage oder gespeicherte Prozedur ausgeführt wird. Dieser Wert ist nicht die tatsächliche Verbindungszeichenfolge und muss stattdessen in den Namen einer Umgebungsvariablen aufgelöst werden. Optionale Schlüsselwörter im Verbindungszeichenfolge-Wert stehen zur Verfügung, um die MySQL-Bindungskonnektivität zu verfeinern. |
commandType |
Erforderlich. Ein CommandType Wert, der für eine Abfrage und Text für eine gespeicherte Prozedur giltStoredProcedure. |
parameters |
Wahlfrei. Null oder mehr Parameterwerte, die während der Ausführung als einzelne Zeichenfolge an den Befehl übergeben werden. Muss dem Format @param1=param1,@param2=param2 folgen. Der Parametername und der Parameterwert dürfen kein Komma () oder ein Gleichheitszeichen (,) enthalten=. |
Konfiguration
In der folgenden Tabelle werden die Bindungskonfigurationseigenschaften erläutert, die Sie in der datei function.json festlegen:
| Eigenschaft | BESCHREIBUNG |
|---|---|
type |
Erforderlich. Muss auf mysql festgelegt sein. |
direction |
Erforderlich. Muss auf in festgelegt sein. |
name |
Erforderlich. Der Name der Variablen, die die Abfrageergebnisse im Funktionscode darstellt. |
commandText |
Erforderlich. Der MySQL-Abfragebefehl oder der Name der gespeicherten Prozedur, die von der Bindung ausgeführt wird. |
connectionStringSetting |
Erforderlich. Der Name einer App-Einstellung, die die Verbindungszeichenfolge für die Datenbank enthält, für die die Abfrage oder gespeicherte Prozedur ausgeführt wird. Dieser Wert ist nicht die tatsächliche Verbindungszeichenfolge und muss stattdessen in den Namen einer Umgebungsvariablen aufgelöst werden. Optionale Schlüsselwörter im Verbindungszeichenfolge-Wert stehen zur Verfügung, um die MySQL-Bindungskonnektivität zu verfeinern. |
commandType |
Erforderlich. Ein CommandType Wert, der für eine Abfrage und Text für eine gespeicherte Prozedur giltStoredProcedure. |
parameters |
Wahlfrei. Null oder mehr Parameterwerte, die während der Ausführung als einzelne Zeichenfolge an den Befehl übergeben werden. Muss dem Format @param1=param1,@param2=param2 folgen. Der Parametername und der Parameterwert dürfen kein Komma () oder ein Gleichheitszeichen (,) enthalten=. |
Wenn Sie die Entwicklung lokal ausführen, fügen Sie Ihre Anwendungseinstellungen in der Datei local.settings.json in der Values-Sammlung hinzu.
Verbrauch
Der Konstruktor des Attributs verwendet den MySQL-Befehlstext, den Befehlstyp, parameter und den Namen der Verbindungszeichenfolgeneinstellung. Der Befehl kann eine MySQL-Abfrage mit dem Befehlstyp System.Data.CommandType.Text oder einem Namen einer gespeicherten Prozedur mit dem Befehlstyp System.Data.CommandType.StoredProceduresein. Der Name der Verbindungszeichenfolgeneinstellung entspricht der Anwendungseinstellung (in local.settings.json für die lokale Entwicklung), die die Verbindungszeichenfolge mit Der Azure-Datenbank für MySQL enthält.
Wenn eine Ausnahme auftritt, wenn eine Azure-Datenbank für MySQL-Eingabebindung ausgeführt wird, wird der Funktionscode beendet. Das Ergebnis kann ein Fehlercode sein, z. B. ein HTTP-Trigger, der einen Fehlercode 500 zurückgibt.