التشغيل السريع: استخدم Python للاتصال، والاستعلام عن البيانات في قاعدة بيانات Azure لـ PostgreSQL- الخادم المرن
ينطبق على: قاعدة بيانات Azure ل PostgreSQL - خادم مرن
في هذا التشغيل السريع، يمكنك الاتصال بمثيل خادم مرن لقاعدة بيانات Azure ل PostgreSQL باستخدام Python. ثم يمكنك استخدام عبارات SQL للاستعلام عن البيانات وإدراجها وتحديثها وحذفها في قاعدة البيانات من أنظمة macOS وUbuntu Linux وWindows الأساسية.
تتضمن الخطوات الواردة في هذه المقالة طريقتين للمصادقة: مصادقة Microsoft Entra ومصادقة PostgreSQL. تعرض علامة التبويب Passwordless مصادقة Microsoft Entra وتعرض علامة التبويب Password مصادقة PostgreSQL.
مصادقة Microsoft Entra هي آلية للاتصال بقاعدة بيانات Azure ل PostgreSQL باستخدام الهويات المحددة في معرف Microsoft Entra. باستخدام مصادقة Microsoft Entra، يمكنك إدارة هويات مستخدمي قاعدة البيانات خدمات Microsoft الأخرى في موقع مركزي، ما يبسط إدارة الأذونات. لمعرفة المزيد، راجع مصادقة Microsoft Entra مع قاعدة بيانات Azure ل PostgreSQL - الخادم المرن.
تستخدم مصادقة PostgreSQL الحسابات المخزنة في PostgreSQL. إذا اخترت استخدام كلمات المرور كبيانات اعتماد للحسابات، تخزين بيانات الاعتماد هذه في user
الجدول. نظرا إلى تخزين كلمات المرور هذه في PostgreSQL، تحتاج إلى إدارة تدوير كلمات المرور بنفسك.
تفترض هذه المقالة أنك على دراية بالتطوير باستخدام Python، ولكنك جديد في العمل مع قاعدة بيانات Azure لخادم PostgreSQL المرن.
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط. أنشئ حساباً مجاناً.
- مثيل خادم مرن لقاعدة بيانات Azure ل PostgreSQL. لإنشاء قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن، راجع إنشاء مثيل لقاعدة بيانات Azure ل PostgreSQL - الخادم المرن.
- Python 3.8+.
- أحدث مثبت حزمة pip.
إضافة قواعد جدار الحماية لمحطة عمل العميل
- إذا قمت بإنشاء مثيل خادم مرن ل Azure Database for PostgreSQL مع وصول خاص (تكامل VNet)، فستحتاج إلى الاتصال بالخادم الخاص بك من مورد داخل نفس VNet مثل الخادم الخاص بك. يمكنك إنشاء جهاز ظاهري وإضافته إلى VNet الذي تم إنشاؤه باستخدام مثيل الخادم المرن ل Azure Database for PostgreSQL. راجع إنشاء وإدارة قاعدة بيانات Azure ل PostgreSQL - الشبكة الظاهرية للخادم المرن باستخدام Azure CLI.
- إذا قمت بإنشاء مثيل خادم مرن لقاعدة بيانات Azure ل PostgreSQL مع الوصول العام (عناوين IP المسموح بها)، يمكنك إضافة عنوان IP المحلي إلى قائمة قواعد جدار الحماية على الخادم الخاص بك. راجع إنشاء وإدارة قاعدة بيانات Azure ل PostgreSQL - قواعد جدار حماية الخادم المرن باستخدام Azure CLI.
تكوين تكامل Microsoft Entra على الخادم (بدون كلمة مرور فقط)
إذا كنت تتبع خطوات المصادقة بدون كلمة مرور، فيجب تكوين مصادقة Microsoft Entra لمثيل الخادم الخاص بك، ويجب تعيينك كمسؤول Microsoft Entra على مثيل الخادم. اتبع الخطوات الواردة في تكوين تكامل Microsoft Entra للتأكد من تكوين مصادقة Microsoft Entra وتعيينك كمسؤول Microsoft Entra على مثيل الخادم الخاص بك.
جهز بيئة التطوير الخاصة بك
قم بالتغيير إلى مجلد حيث تريد تشغيل التعليمات البرمجية وإنشاء بيئة ظاهرية وتنشيطها. البيئة الظاهرية هي دليل قائم بذاته لإصدار معين من Python بالإضافة إلى الحزم الأخرى المطلوبة لهذا التطبيق.
قم بتشغيل الأوامر التالية لإنشاء بيئة ظاهرية وتنشيطها:
py -3 -m venv .venv
.venv\Scripts\activate
تثبيت مكتبات Python
قم بتثبيت مكتبات Python المطلوبة لتشغيل أمثلة التعليمات البرمجية.
قم بتثبيت مكتبة azure-identity، التي توفر دعم مصادقة الرمز المميز ل Microsoft Entra عبر Azure SDK.
pip install azure-identity
إضافة رمز المصادقة
في هذا القسم، يمكنك إضافة رمز المصادقة إلى دليل العمل الخاص بك وتنفيذ أي خطوات إضافية مطلوبة للمصادقة والتخويل مع مثيل الخادم الخاص بك.
انسخ التعليمات البرمجية التالية إلى محرر واحفظها في ملف يسمى get_conn.py.
import urllib.parse import os from azure.identity import DefaultAzureCredential # IMPORTANT! This code is for demonstration purposes only. It's not suitable for use in production. # For example, tokens issued by Microsoft Entra ID have a limited lifetime (24 hours by default). # In production code, you need to implement a token refresh policy. def get_connection_uri(): # Read URI parameters from the environment dbhost = os.environ['DBHOST'] dbname = os.environ['DBNAME'] dbuser = urllib.parse.quote(os.environ['DBUSER']) sslmode = os.environ['SSLMODE'] # Use passwordless authentication via DefaultAzureCredential. # IMPORTANT! This code is for demonstration purposes only. DefaultAzureCredential() is invoked on every call. # In practice, it's better to persist the credential across calls and reuse it so you can take advantage of token # caching and minimize round trips to the identity provider. To learn more, see: # https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/identity/azure-identity/TOKEN_CACHING.md credential = DefaultAzureCredential() # Call get_token() to get a token from Microsft Entra ID and add it as the password in the URI. # Note the requested scope parameter in the call to get_token, "https://ossrdbms-aad.database.windows.net/.default". password = credential.get_token("https://ossrdbms-aad.database.windows.net/.default").token db_uri = f"postgresql://{dbuser}:{password}@{dbhost}/{dbname}?sslmode={sslmode}" return db_uri
الحصول على معلومات اتصال قاعدة البيانات.
- في مدخل Microsoft Azure، ابحث عن اسم خادم Azure Database for PostgreSQL المرن وحدده.
- في صفحة نظرة عامة على الخادم، انسخ اسم الخادم المؤهل بالكامل. يظهر اسم الخادم المؤهل بالكامل دائمًا في صورة <اسم - الخادم - الخاص بي>.postgres.database.azure.com.
- في القائمة اليسرى، ضمن Security، حدد Authentication. تأكد من إدراج حسابك ضمن مسؤولي Microsoft Entra. إذا لم يكن الأمر كذلك، فأكمل الخطوات الواردة في تكوين تكامل Microsoft Entra على الخادم (بدون كلمة مرور فقط) .
تعيين متغيرات البيئة لعناصر URI للاتصال:
set DBHOST=<server-name> set DBNAME=<database-name> set DBUSER=<username> set SSLMODE=require
استبدل قيم العنصر النائب التالية في الأوامر:
-
<server-name>
بالقيمة التي نسختها من مدخل Microsoft Azure. -
<username>
مع اسم مستخدم Azure الخاص بك؛ على سبيل المثال.john@contoso.com
. -
<database-name>
باسم قاعدة بيانات Azure Database for PostgreSQL المرنة. تم إنشاء قاعدة بيانات افتراضية تسمى postgres تلقائيا عند إنشاء الخادم الخاص بك. يمكنك استخدام قاعدة البيانات هذه أو إنشاء قاعدة بيانات جديدة باستخدام أوامر SQL.
-
سجل الدخول إلى Azure على محطة العمل الخاصة بك. يمكنك تسجيل الدخول باستخدام Azure CLI أو Azure PowerShell أو Azure Developer CLI. على سبيل المثال، لتسجيل الدخول عبر Azure CLI، أدخل هذا الأمر:
az login
يستخدم
DefaultAzureCredential
رمز المصادقة للمصادقة باستخدام معرف Microsoft Entra والحصول على رمز مميز يخولك تنفيذ العمليات على مثيل الخادم الخاص بك.DefaultAzureCredential
يدعم سلسلة من أنواع بيانات اعتماد المصادقة. من بين بيانات الاعتماد المدعومة بيانات الاعتماد التي قمت بتسجيل الدخول إليها إلى أدوات المطور مثل Azure CLI أو Azure PowerShell أو Azure Developer CLI.
كيفية تشغيل أمثلة Python
لكل عينة من الرموز البرمجية في هذه المقالة:
إنشاء ملف جديد في محرر نص.
إضافة نماذج التعليمات البرمجية في الملف.
احفظ الملف في مجلد المشروع بملحق .py ، مثل postgres-insert.py. بالنسبة لنظام التشغيل Windows ، تأكد من تحديد ترميز UTF-8 عند حفظ الملف.
في نوع
python
مجلد المشروع متبوعا باسم الملف، على سبيل المثالpython postgres-insert.py
.
أنشئ جدول، وأدرج البيانات
يتصل مثال التعليمات البرمجية التالي بقاعدة بيانات Azure Database for PostgreSQL المرنة باستخدام الدالة psycopg.connect
، ويحمل البيانات باستخدام عبارة SQL INSERT .
cursor.execute
تنفذ الدالة استعلام SQL مقابل قاعدة البيانات.
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Drop previous table of same name if one exists
cursor.execute("DROP TABLE IF EXISTS inventory;")
print("Finished dropping table (if existed)")
# Create a table
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print("Finished creating table")
# Insert some data into the table
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("banana", 150))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("orange", 154))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("apple", 100))
print("Inserted 3 rows of data")
# Clean up
conn.commit()
cursor.close()
conn.close()
عند نجاح تشغيل التعليمة البرمجية يُنتج المخرجات التالية:
Connection established
Finished dropping table (if existed)
Finished creating table
Inserted 3 rows of data
اقرأ البيانات
يتصل مثال التعليمات البرمجية التالي بقاعدة بيانات Azure Database for PostgreSQL المرنة ويستخدم cursor.execute مع عبارة SQL SELECT لقراءة البيانات. تقبل هذه الدالة استعلاما وترجع مجموعة نتائج للتكرار باستخدام cursor.fetchall().
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Fetch all rows from table
cursor.execute("SELECT * FROM inventory;")
rows = cursor.fetchall()
# Print all rows
for row in rows:
print("Data row = (%s, %s, %s)" %(str(row[0]), str(row[1]), str(row[2])))
# Cleanup
conn.commit()
cursor.close()
conn.close()
عند نجاح تشغيل التعليمة البرمجية يُنتج المخرجات التالية:
Connection established
Data row = (1, banana, 150)
Data row = (2, orange, 154)
Data row = (3, apple, 100)
تحديث البيانات
يتصل مثال التعليمات البرمجية التالي بقاعدة بيانات Azure Database for PostgreSQL المرنة ويستخدم cursor.execute مع عبارة SQL UPDATE لتحديث البيانات.
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Update a data row in the table
cursor.execute("UPDATE inventory SET quantity = %s WHERE name = %s;", (200, "banana"))
print("Updated 1 row of data")
# Cleanup
conn.commit()
cursor.close()
conn.close()
حذف البيانات
يتصل مثال التعليمات البرمجية التالي بقاعدة بيانات Azure Database for PostgreSQL المرنة ويستخدم cursor.execute مع عبارة SQL DELETE لحذف عنصر مخزون قمت بإدراجه مسبقا.
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Delete data row from table
cursor.execute("DELETE FROM inventory WHERE name = %s;", ("orange",))
print("Deleted 1 row of data")
# Cleanup
conn.commit()
cursor.close()
conn.close()
المحتوى ذو الصلة
- إدارة قاعدة بيانات Azure ل PostgreSQL - خادم مرن.
- التشغيل السريع: استخدم Java للاتصال والاستعلام عن البيانات من مثيل قاعدة بيانات Azure لخادم PostgreSQL المرن.
- التشغيل السريع: استخدم .NET (C#) للاتصال والاستعلام عن البيانات من مثيل قاعدة بيانات Azure لخادم PostgreSQL المرن.
- التشغيل السريع: استخدم لغة Go للاتصال والاستعلام عن البيانات من مثيل قاعدة بيانات Azure لخادم PostgreSQL المرن.
- التشغيل السريع: استخدم PHP للاتصال والاستعلام عن البيانات من مثيل قاعدة بيانات Azure لخادم PostgreSQL المرن.
- التشغيل السريع: استخدم Azure CLI للاتصال والاستعلام عن البيانات من مثيل قاعدة بيانات Azure لخادم PostgreSQL المرن.
- التشغيل السريع: استيراد البيانات من قاعدة بيانات Azure ل PostgreSQL - خادم مرن في Power BI.