بدء استخدام Azure Cosmos DB ل NoSQL باستخدام Python

ينطبق على: NoSQL

توضح هذه المقالة كيفية الاتصال ب Azure Cosmos DB ل NoSQL باستخدام Python SDK. بمجرد الاتصال، يمكنك إجراء عمليات على قواعد البيانات والحاويات والعناصر.

Package (PyPi) | Samples | API reference | Library source code | Give Feedback

المتطلبات الأساسية

إعداد مشروعك

إنشاء بيئة يمكنك تشغيل تعليمة Python البرمجية فيها.

مع بيئة ظاهرية، يمكنك تثبيت حزم Python في بيئة معزولة دون التأثير على بقية النظام الخاص بك.

تثبيت Azure Cosmos DB ل NoSQL Python SDK في البيئة الظاهرية.

pip install azure-cosmos

إنشاء تطبيق Python

في بيئتك، قم بإنشاء ملف app.py جديد وأضف التعليمات البرمجية التالية إليه:

import json
import os
import sys
import uuid

from azure.core.exceptions import AzureError
from azure.cosmos import CosmosClient, PartitionKey

تستورد التعليمات البرمجية السابقة الوحدات النمطية التي ستستخدمها في بقية المقالة.

الاتصال ب Azure Cosmos DB ل NoSQL

للاتصال بواجهة برمجة التطبيقات ل NoSQL ل Azure Cosmos DB، أنشئ مثيلا لفئة CosmosClient . هذه الفئة هي نقطة البداية لتنفيذ جميع العمليات الخاصة بقواعد البيانات. هناك ثلاث طرق للاتصال بواجهة برمجة تطبيقات لحساب NoSQL باستخدام فئة CosmosClient :

الاتصال بإحدى نقاط النهاية وأحد المفاتيح

يحتوي المنشئ ل CosmosClient على معلمتين مطلوبتين:

المعلمة‬ قيمة المثال ‏‏الوصف
url متغير البيئة COSMOS_ENDPOINT واجهة برمجة التطبيقات لنقطة نهاية NoSQL لاستخدامها لجميع الطلبات.
credential متغير البيئة COSMOS_KEY مفتاح الحساب أو الرمز المميز للمورد لاستخدامه عند المصادقة.

استرداد نقطة نهاية حسابك ومفتاحه

  1. إنشاء متغير shell لدى resourceGroupName.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-python-howto-rg"
    
  2. استخدم الأمر az cosmosdb list لاسترداد اسم حساب Azure Cosmos DB الأول في مجموعة الموارد وتخزينه في متغير accountName shell.

    # Retrieve most recently created account name
    accountName=$(
        az cosmosdb list \
            --resource-group $resourceGroupName \
            --query "[0].name" \
            --output tsv
    )
    
  3. احصل على واجهة برمجة التطبيقات لنقطة نهاية NoSQL URI للحساب باستخدام az cosmosdb show الأمر .

    az cosmosdb show \
        --resource-group $resourceGroupName \
        --name $accountName \
        --query "documentEndpoint"
    
  4. ابحث عن PRIMARY KEY من قائمة مفاتيح الحساب باستخدام الأمر az-cosmosdb-keys-list.

    az cosmosdb keys list \
        --resource-group $resourceGroupName \
        --name $accountName \
        --type "keys" \
        --query "primaryMasterKey"
    
  5. سجل قيم URI وPRIMARY KEY. سوف تستخدم بيانات الاعتماد هذه لاحقًا.

لاستخدام قيم URI و PRIMARY KEY داخل التعليمات البرمجية ل Python، استمر في استخدام متغيرات البيئة الجديدة على الجهاز المحلي الذي يقوم بتشغيل التطبيق.

$env:COSMOS_ENDPOINT = "<cosmos-account-URI>"
$env:COSMOS_KEY = "<cosmos-account-PRIMARY-KEY>"

إنشاء CosmosClient باستخدام نقطة نهاية الحساب ومفتاحه

إنشاء مثيل جديد من فئة CosmosClient مع متغيرات البيئة COSMOS_ENDPOINT وCOSMOS_KEY كمعلمات.

ENDPOINT = os.environ["COSMOS_ENDPOINT"]
KEY = os.environ["COSMOS_KEY"]

client = CosmosClient(url=ENDPOINT, credential=KEY)

الاتصال بسلسلة الاتصال

تحتوي فئة CosmosClient على أسلوب from_connection_string يمكنك استخدامه للاتصال بمعلمة واحدة مطلوبة:

المعلمة‬ قيمة المثال ‏‏الوصف
conn_str متغير البيئة COSMOS_CONNECTION_STRING سلسلة الاتصال إلى API لحساب NoSQL.
credential متغير البيئة COSMOS_KEY مفتاح حساب بديل اختياري أو رمز مميز للمورد لاستخدامه بدلا من مفتاح الحساب في سلسلة الاتصال.

استرداد سلسلة الاتصال حسابك

  1. استخدم الأمر az cosmosdb list لاسترداد اسم حساب Azure Cosmos DB الأول في مجموعة الموارد وتخزينه في متغير accountName shell.

    # Retrieve most recently created account name
    accountName=$(
        az cosmosdb list \
            --resource-group $resourceGroupName \
            --query "[0].name" \
            --output tsv
    )
    
  2. ابحث عن سلسلة الاتصال PRIMARY CONNECTION STRING من قائمة سلاسل الاتصال للحساب باستخدام الأمر az-cosmosdb-keys-list.

    az cosmosdb keys list \
        --resource-group $resourceGroupName \
        --name $accountName \
        --type "connection-strings" \
        --query "connectionStrings[?description == \`Primary SQL Connection String\`] | [0].connectionString"
    

لاستخدام قيمة PRIMARY CONNECTION STRING ضمن التعليمات البرمجية ل Python، استمر في ذلك إلى متغير بيئة جديد على الجهاز المحلي الذي يقوم بتشغيل التطبيق.

$env:COSMOS_CONNECTION_STRING = "<cosmos-account-PRIMARY-CONNECTION-STRING>"

إنشاء CosmosClient باستخدام سلسلة الاتصال

إنشاء مثيل جديد من فئة CosmosClient باستخدام متغير البيئة COSMOS_CONNECTION_STRING باعتباره المعلمة الوحيدة.

CONN_STR = os.environ["COSMOS_CONNECTION_STRING"]

client = CosmosClient.from_connection_string(conn_str=CONN_STR)

للاتصال بواجهة برمجة التطبيقات الخاصة بك لحساب NoSQL باستخدام النظام الأساسي للهويات في Microsoft ومعرف Microsoft Entra، استخدم أساس أمان. سيعتمد النوع الدقيق للحساب الأساسي على المكان الذي تستضيف فيه التعليمات البرمجية للتطبيق الخاص بك. الجدول التالي دليل مرجعي سريع.

مكان تشغيل التطبيق أساس الأمان
جهاز محلي (تطوير واختبار) هوية المستخدم أو كيان الخدمة
Azure الهوية المُدارة
الخوادم أو العملاء خارج Azure كيان الخدمة

قم باستيراد حزمة Azure.Identity

تحتوي حزمة azure-identity على وظيفة المصادقة الأساسية التي تتم مشاركتها بين جميع مكتبات Azure SDK.

استيراد حزمة azure-identity إلى بيئتك.

pip install azure-identity

قم بإنشاء CosmosClient عن طريق تنفيذ بيانات الاعتماد الافتراضية

إذا كنت تجري الاختبار على جهاز محلي، أو سيتم تشغيل تطبيقك على خدمات Azure بدعم مباشر للهويات المدارة، فاحصل على رمز OAuth المميز عن طريق إنشاء مثيل DefaultAzureCredential.

في app.py:

  • احصل على نقطة النهاية للاتصال كما هو موضح في القسم أعلاه للاتصال بنقطة نهاية ومفتاح وتعيين ذلك كمتغير COSMOS_ENDPOINTالبيئة .

  • استيراد DefaultAzureCredential وإنشاء مثيل له.

  • إنشاء مثيل جديد من فئة CosmosClient باستخدام نقطة النهاية وبيانات الاعتماد كمعلمات.

from azure.identity import DefaultAzureCredential

ENDPOINT = os.environ["COSMOS_ENDPOINT"]

credential = DefaultAzureCredential()

client = CosmosClient(ENDPOINT, credential)

هام

للحصول على تفاصيل حول كيفية إضافة الدور الصحيح لتمكين DefaultAzureCredential العمل، راجع تكوين التحكم في الوصول المستند إلى الدور باستخدام معرف Microsoft Entra لحساب Azure Cosmos DB الخاص بك. على وجه الخصوص، راجع القسم الخاص بإنشاء الأدوار وتعيينها إلى معرف أساسي.

قم بإنشاء CosmosClient عن طريق تنفيذ بيانات الاعتماد المخصصة

إذا كنت تخطط لنشر التطبيق من Azure، يمكنك الحصول على رمز OAuth المميز باستخدام فئات أخرى في مكتبة عميل Azure.Identity ل Python. هذه الفئات الأخرى مشتقة من الفئة TokenCredential أيضاً.

على سبيل المثال، نقوم بإنشاء مثيل ClientSecretCredential باستخدام معرفات العميل والمستأجر، بالإضافة إلى سر العميل.

في app.py:

  • احصل على معلومات بيانات الاعتماد من متغيرات البيئة لمدير الخدمة. يمكنك الحصول على معرف العميل ومعرف المستأجر وسر العميل عند تسجيل تطبيق في معرف Microsoft Entra. لمزيد من المعلومات حول تسجيل تطبيقات Microsoft Entra، راجع تسجيل تطبيق مع النظام الأساسي للهويات في Microsoft.

  • استيراد ClientSecretCredential وإنشاء مثيل مع CLIENT_IDTENANT_IDمتغيرات البيئة و و CLIENT_SECRET كمعلمات.

  • إنشاء مثيل جديد من فئة CosmosClient باستخدام نقطة النهاية وبيانات الاعتماد كمعلمات.

from azure.identity import ClientSecretCredential

ENDPOINT = os.environ["COSMOS_ENDPOINT"]
TENANT_ID = os.environ["TENANT_ID"]
CLIENT_ID = os.environ["CLIENT_ID"]
CLIENT_SECRET = os.environ["CLIENT_SECRET"]

credential = ClientSecretCredential(
    tenant_id=TENANT_ID, client_id=CLIENT_ID, client_secret=CLIENT_SECRET
)

client = CosmosClient(ENDPOINT, credential)

إنشاء التطبيق الخاص بك

في أثناء إنشاء تطبيقك، سوف تتفاعل التعليمة البرمجية الخاصة بك في المقام الأول مع أربعة أنواع من الموارد:

  • واجهة برمجة التطبيقات لحساب NoSQL، وهي مساحة الاسم الفريدة ذات المستوى الأعلى لبيانات Azure Cosmos DB.

  • قواعد البيانات، وهي تنظم الحاويات في حسابك.

  • الحاويات، وهي تحتوي على مجموعة من العناصر الفردية في قاعدة البيانات الخاصة بك.

  • العناصر، وهي تمثل مستند JSON في الحاوية الخاصة بك.

يعرض الرسم التخطيطي التالي العلاقة بين هذه الموارد.

رسم تخطيطي لتدرج Azure Cosmos DB الهرمي بما في ذلك الحسابات وقواعد البيانات والحاويات والعناصر.

رسم تخطيطي هرمي يظهر حساب قاعدة بيانات Azure Cosmos في الأعلى. يحتوي الحساب على عقدتين تابعتين لقاعدة البيانات. تتضمن إحدى عُقد قاعدة البيانات عقدتين تابعتين للحاوية. تتضمن عقدة قاعدة البيانات الأخرى عقدة حاوية تابعة واحدة. تحتوي عقدة الحاوية المفردة على ثلاث عُقد عناصر تابعة.

يتم تمثيل كل نوع من أنواع الموارد بفئة Python مقترنة واحدة أو أكثر. فيما يلي قائمة بالفئات الأكثر شيوعا للبرمجة المتزامنة. (هناك فئات مماثلة للبرمجة غير المتزامنة ضمن مساحة الاسم azure.cosmos.aio .)

الفصل ‏‏الوصف
CosmosClient توفر هذه الفئة تمثيلاً منطقياً من جانب العميل لخدمة Azure Cosmos DB. يتم استخدام كائن العميل لتكوين الطلبات وتنفيذها على الخدمة.
DatabaseProxy واجهة لقاعدة بيانات قد تكون موجودة أو لا توجد في الخدمة حتى الآن. لا يجب إنشاء مثيل لهذه الفئة مباشرة. بدلا من ذلك، يجب استخدام أسلوب get_database_client CosmosClient.
ContainerProxy واجهة للتفاعل مع حاوية Cosmos DB معينة. لا يجب إنشاء مثيل لهذه الفئة مباشرة. بدلا من ذلك، استخدم أسلوب get_container_client DatabaseProxy للحصول على حاوية موجودة، أو أسلوب create_container لإنشاء حاوية جديدة.

توضح لك الأدلة التالية كيفية استخدام كل فئة من هذه الفئات لإنشاء التطبيق الخاص بك.

الدليل: ‏‏الوصف
إنشاء قاعدة بيانات إنشاء قواعد بيانات
إنشاء حاوية إنشاء حاويات
أمثلة العنصر نقطة قراءة عنصر معين

(راجع أيضًا )

الخطوات التالية

الآن بعد أن قمت بالاتصال بواجهة برمجة تطبيقات لحساب NoSQL، استخدم الدليل التالي لإنشاء قواعد البيانات وإدارتها.