Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir veritabanına yazmak için MySQL için Azure Veritabanı çıkış bağlamasını kullanabilirsiniz.
Kurulum ve yapılandırma hakkında bilgi için genel bakışa bakın.
Önemli
Bu makalede, Node.js programlama modelinin birden çok sürümünü desteklemek için sekmeler kullanılır. Genel kullanıma sunulan v4 modeli, JavaScript ve TypeScript geliştiricileri için daha esnek ve sezgisel bir deneyime sahip olacak şekilde tasarlanmıştır. v4 modelinin nasıl çalıştığı hakkında daha fazla bilgi için Azure İşlevleri Node.js geliştirici kılavuzuna bakın. v3 ile v4 arasındaki farklar hakkında daha fazla bilgi edinmek için geçiş kılavuzuna bakın.
Örnekler
Aşağıdaki C# modlarından birini kullanarak bir C# işlevi oluşturabilirsiniz:
- Yalıtılmış çalışan modeli: Çalışma zamanından yalıtılmış bir çalışan işleminde çalışan derlenmiş C# işlevi. .NET ve .NET Framework için uzun vadeli destek (LTS) ve LTS olmayan sürümlerde çalışan C# işlevlerini desteklemek için yalıtılmış bir çalışan işlemi gereklidir.
- İşlem içi model: Azure İşlevleri çalışma zamanıyla aynı işlemde çalışan derlenmiş C# işlevi.
- C# betiği: Öncelikle Azure portalında C# işlevleri oluşturduğunuzda kullanılır.
Önemli
İşlem içi model desteği 10 Kasım 2026'da sona erecektir. Tam destek için uygulamalarınızı yalıtılmış çalışan modeline geçirmenizi kesinlikle öneririz.
gitHub deposunda MySQL için Azure Veritabanı çıkış bağlaması için daha fazla örnek mevcuttur.
Bu bölüm aşağıdaki örneği içerir:
Örnek bir Product sınıfa ve buna karşılık gelen bir veritabanı tablosuna başvurur:
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 tetikleyicisi, bir kayıt yazma
Aşağıdaki örnekte, BIR HTTP isteğinde JSON gövdesi olarak sağlanan verileri kullanarak veritabanına kayıt ekleyen bir POST gösterilmektedir.
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);
}
}
}
gitHub deposunda MySQL için Azure Veritabanı çıkış bağlaması için daha fazla örnek mevcuttur.
Bu bölüm aşağıdaki örneği içerir:
Örnek bir Product sınıfa ve buna karşılık gelen bir veritabanı tablosuna başvurur:
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 tetikleyicisi, tabloya kayıt yazma
Aşağıdaki örnekte, http POST isteğinde JSON gövdesi olarak sağlanan verileri kullanarak tabloya kayıt ekleyen bir Java işlevindeki MySQL için Azure Veritabanı çıkış bağlaması gösterilmektedir. İşlev, JSON gövdesini ayrıştırmak için com.google.code.gson kitaplığına ek bir bağımlılık alır.
<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();
}
}
gitHub deposunda MySQL için Azure Veritabanı çıkış bağlaması için daha fazla örnek mevcuttur.
Bu bölüm aşağıdaki örneği içerir:
Örnek bir veritabanı tablosuna başvurur:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
HTTP tetikleyicisi, tabloya kayıt yazma
Aşağıdaki örnekte, HTTP POST isteğinde JSON gövdesi olarak sağlanan verileri kullanarak bir tabloya kayıt ekleyen MySQL için Azure Veritabanı çıkış bağlaması gösterilmektedir.
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)
};
}
});
gitHub deposunda MySQL için Azure Veritabanı çıkış bağlaması için daha fazla örnek mevcuttur.
Bu bölüm aşağıdaki örneği içerir:
Örnek bir veritabanı tablosuna başvurur:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
HTTP tetikleyicisi, tabloya kayıt yazma
Aşağıdaki örnekte, bir function.json dosyasındaki MySQL için Azure Veritabanı çıkış bağlaması ve HTTP POST isteğinde JSON gövdesi olarak sağlanan verileri kullanarak bir tabloya kayıt ekleyen bir PowerShell işlevi gösterilmektedir.
Aşağıdaki örnek, function.json dosyasındaki verileri bağlamadır:
{
"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
}
Yapılandırma bölümünde bu özellikler açıklanır.
Aşağıdaki örnek, run.ps1 dosyasındaki işlev için örnek PowerShell kodudur:
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
})
gitHub deposunda MySQL için Azure Veritabanı çıkış bağlaması için daha fazla örnek mevcuttur.
Bu bölüm aşağıdaki örneği içerir:
Örnek bir veritabanı tablosuna başvurur:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
Not
Python için Azure İşlevleri sürüm 1.22.0b4 kullanmanız gerekir.
HTTP tetikleyicisi, tabloya kayıt yazma
Aşağıdaki örnekte, bir function.json dosyasındaki MySQL için Azure Veritabanı çıkış bağlaması ve HTTP POST isteğinde JSON gövdesi olarak sağlanan verileri kullanarak bir tabloya kayıt ekleyen bir Python işlevi gösterilmektedir.
Aşağıdaki örnek, function_app.py dosyası için örnek Python kodudur:
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"
)
Özellikler
C# kitaplığı, aşağıdaki özelliklere sahip olan işlevdeki MySQL bağlamalarını bildirmek için özniteliğini kullanırMySqlAttribute:
| Öznitelik özelliği | Açıklama |
|---|---|
CommandText |
Gerekli. Bağlamanın yazdığı tablonun adı. |
ConnectionStringSetting |
Gerekli. Verilerin yazıldığı veritabanının bağlantı dizesini içeren bir uygulama ayarının adı. Bu değer gerçek bağlantı dizesi değildir ve bunun yerine bir ortam değişkenine çözümlenmesi gerekir. |
Ek Açıklamalar
Java işlevleri çalışma zamanı kitaplığında@MySQLOutput, değeri MySQL için Azure Veritabanı gelen parametrelerde ek açıklamayı kullanın. Bu ek açıklama aşağıdaki öğeleri destekler:
| Öğe | Açıklama |
|---|---|
commandText |
Gerekli. Bağlamanın yazdığı tablonun adı. |
connectionStringSetting |
Gerekli. Verilerin yazıldığı veritabanının bağlantı dizesini içeren bir uygulama ayarının adı. Bu değer gerçek bağlantı dizesi değildir ve bunun yerine bir ortam değişkenine çözümlenmesi gerekir. |
name |
Gerekli. İşlev bağlamasının benzersiz adı. |
Yapılandırma
Aşağıdaki tabloda, yöntemine geçirilen options nesnede output.generic() ayarlayabileceğiniz özellikler açıklanmaktadır:
| Özellik | Açıklama |
|---|---|
commandText |
Gerekli. Bağlamanın yazdığı tablonun adı. |
connectionStringSetting |
Gerekli. Verilerin yazıldığı veritabanının bağlantı dizesini içeren bir uygulama ayarının adı. Bu değer gerçek bağlantı dizesi değildir ve bunun yerine bir ortam değişkenine çözümlenmesi gerekir. |
Yapılandırma
Aşağıdaki tabloda, function.json dosyasında ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır:
| Özellik | Açıklama |
|---|---|
type |
Gerekli. olarak ayarlanmalıdır Mysql. |
direction |
Gerekli. olarak ayarlanmalıdır out. |
name |
Gerekli. İşlev kodundaki varlığı temsil eden değişkenin adı. |
commandText |
Gerekli. Bağlamanın yazdığı tablonun adı. |
connectionStringSetting |
Gerekli. Verilerin yazıldığı veritabanının bağlantı dizesini içeren bir uygulama ayarının adı. Bu değer gerçek bağlantı dizesi değildir ve bunun yerine bir ortam değişkenine çözümlenmesi gerekir. |
Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasınaValues ekleyin.
Not
Çıkış bağlaması dolar işareti ($), backtick ('), kısa çizgi (-) ve alt çizgi (_) dahil olmak üzere tüm özel karakterleri destekler. Daha fazla bilgi için MySQL topluluk belgelerine bakın.
Programlama dili, desteklediği özel karakterler içeren üye özniteliklerini tanımlayabilir. Örneğin, C# değişken tanımlamaya yönelik birkaç sınırlamaya sahiptir.
Aksi takdirde, tüm özel karakterleri kapsayan çıkış bağlaması için kullanabilirsiniz JObject .
GitHub'da ayrıntılı bir örneği izleyebilirsiniz.
Kullanım
CommandText özelliği, verilerin depolandığı tablonun adıdır. Bağlantı dizesi ayarının adı, MySQL için Azure Veritabanı bağlantı dizesini içeren uygulama ayarına karşılık gelir.
MySQL giriş bağlaması yürütürken bir özel durum oluşursa işlev kodu çalışmaz. Sonuç, 500 hata kodu döndüren http tetikleyicisi gibi bir hata kodu olabilir.