Partager via


Démarrage rapide : Utiliser Azure Cosmos DB pour MongoDB vCore avec le pilote MongoDB pour Python

Dans ce démarrage rapide, vous déployez une application Azure Cosmos DB for MongoDB de base en utilisant Python. Azure Cosmos DB pour MongoDB vCore est un magasin de données sans schéma qui permet aux applications de stocker des documents non structurés dans le cloud avec des bibliothèques MongoDB. Vous apprenez à créer des documents et à effectuer des tâches de base au sein de votre ressource Azure Cosmos DB en tirant parti de Python.

Code source de la bibliothèque | Package (PyPI) | Azure Developer CLI

Conditions préalables

  • Interface en ligne de commande Azure pour les développeurs

  • Docker Desktop

  • Un abonnement Azure

    • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
  • Python 3.12

Initialiser le projet

Utilisez Azure Developer CLI (azd) pour créer un cluster vCore Azure Cosmos DB pour MongoDB et déployer un exemple d’application conteneurisé. L’exemple d’application utilise la bibliothèque de client pour gérer, créer, lire et interroger des exemples de données.

  1. Ouvrez un terminal dans un répertoire vide.

  2. Si vous n’êtes pas encore authentifié, authentifiez-vous auprès d’Azure Developer CLI à l’aide de azd auth login. Suivez les étapes spécifiées par l’outil pour vous authentifier auprès de l’interface CLI à l’aide de vos informations d’identification Azure préférées.

    azd auth login
    
  3. Utilisez azd init pour initialiser le projet.

    azd init --template cosmos-db-mongodb-vcore-python-quickstart
    
  4. Lors de l’initialisation, configurez un nom d’environnement unique.

  5. Déployez le cluster à l'aide de azd up. Les modèles Bicep déploient également un exemple d’application web.

    azd up
    
  6. Pendant le processus d’approvisionnement, sélectionnez votre abonnement, l’emplacement souhaité et le groupe de ressources cible. Attendez que le processus d’approvisionnement se termine. Le processus peut prendre environ dix minutes.

  7. Une fois le provisionnement de vos ressources Azure effectué, une URL vers l’application web en cours d’exécution est incluse dans la sortie.

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
    - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io>
    
    SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
    
  8. Utilisez l’URL dans la console pour accéder à votre application web dans le navigateur. Observez la sortie de l’application en cours d’exécution.

Capture d’écran de l’application web en cours d’exécution.

Installer la bibliothèque de client

La bibliothèque de client est disponible via PyPi, en tant que package pymongo.

  1. Ouvrez un terminal et accédez au dossier /src.

    cd ./src
    
  2. S’il n’est pas déjà installé, installez le package pymongo à l’aide de pip install.

    pip install pymongo
    
  3. S’il n’est pas déjà installé, installez le package azure.identity à l’aide de pip install.

    pip install azure.identity
    
  4. Ouvrez et examinez le fichier src/requirements.txt pour vérifier que les deux entrées de package existent.

Importer des bibliothèques

Importez les espaces de noms suivants dans votre code d’application :

Paquet Source
DefaultAzureCredential azure.identity Kit de développement logiciel (SDK) Azure pour Python
MongoClient pymongo Pilote MongoDB officiel pour Python
OIDCCallback pymongo Pilote MongoDB officiel pour Python
OIDCCallbackContext pymongo Pilote MongoDB officiel pour Python
OIDCCallbackResult pymongo Pilote MongoDB officiel pour Python
from azure.identity import DefaultAzureCredential

from pymongo import MongoClient
from pymongo.auth_oidc import OIDCCallback, OIDCCallbackContext, OIDCCallbackResult

Modèle d'objet

Nom Descriptif
MongoClient Type utilisé pour se connecter à MongoDB.
Database Représente une base de données dans le cluster.
Collection Représente une collection au sein d’une base de données dans le cluster.

Exemples de code

L’exemple de code du modèle utilise une base de données nommée cosmicworks et une collection nommée products. La collection products contient des détails tels que le nom, la catégorie, la quantité et un identificateur unique pour chaque produit. La collection utilise la propriété /category comme clé de partition.

Authentifier le client

Bien que l’authentification Microsoft Entra pour Azure Cosmos DB pour MongoDB vCore puisse utiliser des types connus TokenCredential , vous devez implémenter un gestionnaire de jetons personnalisé. Cet exemple d’implémentation peut être utilisé pour créer une MongoClient avec prise en charge de l’authentification standard de Microsoft Entra pour différents types d'identité.

  1. Tout d’abord, définissez une classe nommée AzureIdentityTokenCallback qui définit une fetch fonction prenant dans le OIDCCallbackContext paramètre et retournant un OIDCCallbackResult.

    class AzureIdentityTokenCallback(OIDCCallback):
        def __init__(self, credential):
            self.credential = credential
    
        def fetch(self, context: OIDCCallbackContext) -> OIDCCallbackResult:
            token = self.credential.get_token(
                "https://ossrdbms-aad.database.windows.net/.default").token
            return OIDCCallbackResult(access_token=token)
    
  2. Utilisez votre classe de gestionnaire personnalisée en passant une nouvelle instance du type DefaultAzureCredential

    credential = DefaultAzureCredential()
    
    authProperties = {"OIDC_CALLBACK": AzureIdentityTokenCallback(credential)}
    
  3. Créez une instance de MongoClient à l'aide de votre nom de cluster, et des options de configuration recommandées pour Azure Cosmos DB pour MongoDB vCore. Configurez également votre mécanisme d’authentification personnalisé.

    clusterName = "<azure-cosmos-db-mongodb-vcore-cluster-name>"
    
    client = MongoClient(
        f"mongodb+srv://{clusterName}.global.mongocluster.cosmos.azure.com/",
        connectTimeoutMS=120000,
        tls=True,
        retryWrites=True,
        authMechanism="MONGODB-OIDC",
        authMechanismProperties=authProperties
    )
    

Obtenir une base de données

Cet exemple crée une instance de type Database à l’aide de la fonction get_database de type MongoClient.

database = client.get_database("<database-name>")

Obtenez une collection

Cet exemple crée une instance de type Collection à l’aide de la fonction get_collection de type Database.

collection = database.get_collection("<collection-name>")

Créer un document

Créez un document dans la collection en utilisant collection.update_one. Cette méthode fait un « upsert » de l’élément en le remplaçant de manière effective s’il existe déjà.

new_document = {
    "_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "category": "gear-surf-surfboards",
    "name": "Yamba Surfboard",
    "quantity": 12,
    "sale": False,
}

filter = {
    "_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "category": "gear-surf-surfboards"
}

payload = {
    "$set": new_document
}

result = collection.update_one(filter, payload, upsert=True);

Lire un document

Effectuez une opération de lecture de point en utilisant les champs d’identificateur unique (id) et de clé de partition. Utilisez collection.find_one pour récupérer efficacement l’élément spécifique.

filter = {
    "_id": "bbbbbbbb-1111-2222-3333-cccccccccccc",
    "category": "gear-surf-surfboards"
}

existing_document = collection.find_one(filter)

Interroger des documents

Effectuez une requête sur plusieurs éléments d’un conteneur à l’aide de collection.find. Cette requête trouve tous les éléments au sein d’une catégorie spécifiée (clé de partition).

filter = {
    "category": "gear-surf-surfboards"
}

matched_documents = collection.find(filter)

for document in matched_documents:
    # Do something with each item

Supprimer un document

Supprimez un document en envoyant un filtre pour l’identificateur unique du document. Permet delete_one de supprimer le document de la collection.

filter = {
    '_id': id
}

result = collection.delete_one(filter)

Exploration de vos données

Utilisez l’extension Visual Studio Code pour Azure Cosmos DB pour explorer vos données vCore MongoDB. Vous pouvez effectuer des opérations de base de données de base, y compris, mais sans s’y limiter :

  • Exécution de requêtes à l'aide d'un album ou de l'éditeur de requêtes
  • Modification, mise à jour, création et suppression de documents
  • Importation de données en masse à partir d'autres sources
  • Gestion de bases de données et de collections

Pour plus d’informations, consultez Guide pratique pour utiliser l’extension Visual Studio Code pour explorer les données vCore Azure Cosmos DB pour MongoDB.

Nettoyer les ressources

Lorsque vous n’avez plus besoin de l’exemple d’application ou de ressources, supprimez le déploiement correspondant et toutes les ressources.

azd down --force