إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يمكنك استخدام قاعدة بيانات Azure لربط إخراج MySQL للكتابة إلى قاعدة بيانات.
للحصول على معلومات حول الإعداد والتكوين، راجع نظرة عامة.
هام
تستخدم هذه المقالة علامات التبويب لدعم إصدارات متعددة من نموذج البرمجة Node.js. يتوفر نموذج v4 بشكل عام وتم تصميمه للحصول على تجربة أكثر مرونة وبديهية لمطوري JavaScript وTypeScript. لمزيد من التفاصيل حول كيفية عمل نموذج v4، راجع دليل مطور Azure Functions Node.js. لمعرفة المزيد حول الاختلافات بين v3 وv4، راجع دليل الترحيل.
الأمثلة
يمكنك إنشاء دالة C# باستخدام أحد أوضاع C# التالية:
- نموذج العامل المعزول: دالة C# المترجمة التي يتم تشغيلها في عملية عامل معزولة عن وقت التشغيل. مطلوب عملية عامل معزولة لدعم وظائف C# التي تعمل على إصدارات الدعم طويل المدى (LTS) والإصدارات غير LTS ل .NET و.NET Framework.
- نموذج قيد المعالجة: دالة C# المحولة برمجيا التي تعمل في نفس العملية مثل وقت تشغيل Azure Functions.
- البرنامج النصي C#: يستخدم بشكل أساسي عند إنشاء وظائف C# في مدخل Microsoft Azure.
هام
سينتهي الدعم للنموذج قيد التنفيذ في 10 نوفمبر 2026. نوصي بشدة بترحيل تطبيقاتك إلى نموذج العامل المعزول للحصول على الدعم الكامل.
تتوفر المزيد من العينات لقاعدة بيانات Azure لربط إخراج MySQL في مستودع GitHub.
يحتوي هذا القسم على المثال التالي:
يشير المثال إلى Product فئة وجدول قاعدة بيانات مطابق:
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، اكتب سجلاً واحداً
يظهر المثال التالي دالة C# التي تضيف سجلا إلى قاعدة بيانات، باستخدام البيانات المتوفرة في طلب HTTP POST كنص 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);
}
}
}
تتوفر المزيد من العينات لقاعدة بيانات Azure لربط إخراج MySQL في مستودع GitHub.
يحتوي هذا القسم على المثال التالي:
يشير المثال إلى Product فئة وجدول قاعدة بيانات مطابق:
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، اكتب سجلا إلى جدول
يوضح المثال التالي ربط إخراج Azure Database for MySQL في دالة Java التي تضيف سجلا إلى جدول، باستخدام البيانات المتوفرة في طلب HTTP POST كنص JSON. تأخذ الدالة تبعية إضافية على مكتبة com.google.code.gson لتحليل نص 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();
}
}
تتوفر المزيد من العينات لقاعدة بيانات Azure لربط إخراج MySQL في مستودع GitHub.
يحتوي هذا القسم على المثال التالي:
يشير المثال إلى جدول قاعدة بيانات:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
مشغل HTTP، اكتب السجلات إلى جدول
يوضح المثال التالي ربط إخراج Azure Database for MySQL الذي يضيف سجلات إلى جدول، باستخدام البيانات المتوفرة في طلب HTTP POST كنص 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)
};
}
});
تتوفر المزيد من العينات لقاعدة بيانات Azure لربط إخراج MySQL في مستودع GitHub.
يحتوي هذا القسم على المثال التالي:
يشير المثال إلى جدول قاعدة بيانات:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
مشغل HTTP، اكتب السجلات إلى جدول
يوضح المثال التالي ربط إخراج Azure Database for MySQL في ملف function.json ودالة PowerShell التي تضيف سجلات إلى جدول، باستخدام البيانات المتوفرة في طلب HTTP POST كنص JSON.
المثال التالي هو ربط البيانات في ملف 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
}
يشرح قسم التكوين هذه الخصائص.
المثال التالي هو نموذج التعليمات البرمجية PowerShell للدالة في ملف 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
})
تتوفر المزيد من العينات لقاعدة بيانات Azure لربط إخراج MySQL في مستودع GitHub.
يحتوي هذا القسم على المثال التالي:
يشير المثال إلى جدول قاعدة بيانات:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
إشعار
يجب استخدام Azure Functions الإصدار 1.22.0b4 ل Python.
مشغل HTTP، اكتب السجلات إلى جدول
يوضح المثال التالي ربط إخراج Azure Database for MySQL في ملف function.json ودالة Python التي تضيف سجلات إلى جدول، باستخدام البيانات المتوفرة في طلب HTTP POST كنص JSON.
المثال التالي هو نموذج التعليمات البرمجية Python لملف 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"
)
السمات
تستخدم مكتبة C# السمة MySqlAttribute للإعلان عن روابط MySQL على الدالة ، والتي تحتوي على الخصائص التالية:
| خاصية السمة | الوصف |
|---|---|
CommandText |
مطلوب. اسم الجدول الذي يكتب الربط إليه. |
ConnectionStringSetting |
مطلوب. اسم إعداد تطبيق يحتوي على سلسلة الاتصال لقاعدة البيانات التي تتم كتابة البيانات إليها. هذه القيمة ليست سلسلة الاتصال الفعلية ويجب حلها بدلا من ذلك إلى متغير بيئة. |
تعليقات توضيحية
في مكتبة وقت تشغيل وظائف Java، استخدم التعليق التوضيحي @MySQLOutput على المعلمات التي تأتي قيمتها من قاعدة بيانات Azure ل MySQL. يدعم هذا التعليق التوضيحي العناصر التالية:
| العنصر | الوصف |
|---|---|
commandText |
مطلوب. اسم الجدول الذي يكتب الربط إليه. |
connectionStringSetting |
مطلوب. اسم إعداد تطبيق يحتوي على سلسلة الاتصال لقاعدة البيانات التي تتم كتابة البيانات إليها. هذه القيمة ليست سلسلة الاتصال الفعلية ويجب حلها بدلا من ذلك إلى متغير بيئة. |
name |
مطلوب. الاسم الفريد لربط الدالة. |
التكوين
يوضح الجدول التالي الخصائص التي يمكنك تعيينها على الكائن الذي options تم تمريره output.generic() إلى الأسلوب :
| الخاصية | الوصف |
|---|---|
commandText |
مطلوب. اسم الجدول الذي يكتب الربط إليه. |
connectionStringSetting |
مطلوب. اسم إعداد تطبيق يحتوي على سلسلة الاتصال لقاعدة البيانات التي تتم كتابة البيانات إليها. هذه القيمة ليست سلسلة الاتصال الفعلية ويجب حلها بدلا من ذلك إلى متغير بيئة. |
التكوين
يوضح الجدول التالي خصائص تكوين الربط التي قمت بتعيينها في ملف function.json:
| الخاصية | الوصف |
|---|---|
type |
مطلوب. يجب تعيينه إلى Mysql. |
direction |
مطلوب. يجب تعيينه إلى out. |
name |
مطلوب. اسم المتغيّر الذي يمثل الكيان في التعليمة البرمجية الوظيفة. |
commandText |
مطلوب. اسم الجدول الذي يكتب الربط إليه. |
connectionStringSetting |
مطلوب. اسم إعداد تطبيق يحتوي على سلسلة الاتصال لقاعدة البيانات التي تتم كتابة البيانات إليها. هذه القيمة ليست سلسلة الاتصال الفعلية ويجب حلها بدلا من ذلك إلى متغير بيئة. |
عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values.
إشعار
يدعم ربط الإخراج جميع الأحرف الخاصة، بما في ذلك علامة الدولار ($)، والخلفية (')، والواصلة (-)، والتسطير السفلي (_). لمزيد من المعلومات، راجع وثائق مجتمع MySQL.
قد تحدد لغة البرمجة سمات الأعضاء التي تحتوي على أحرف خاصة تدعمها. على سبيل المثال، لدى C# بعض القيود لتعريف المتغيرات.
وإلا، يمكنك استخدام JObject لربط الإخراج الذي يغطي جميع الأحرف الخاصة. يمكنك اتباع مثال مفصل على GitHub.
الاستخدام
CommandText الخاصية هي اسم الجدول حيث يتم تخزين البيانات. يتوافق اسم إعداد سلسلة الاتصال مع إعداد التطبيق الذي يحتوي على سلسلة الاتصال بقاعدة بيانات Azure ل MySQL.
إذا حدث استثناء عند تنفيذ ربط إدخال MySQL، فلن يتم تشغيل التعليمة البرمجية للدالة. قد تكون النتيجة رمز خطأ، مثل مشغل HTTP الذي يقوم بإرجاع رمز خطأ 500.