Partager via


Démarrage rapide : Bibliothèque de client Azure Cosmos DB pour Apache Cassandra pour Python

Prise en main de la bibliothèque cliente Azure Cosmos DB pour Apache Cassandra pour Python pour stocker, gérer et interroger des données non structurées. Suivez les étapes décrites dans ce guide pour créer un compte, installer une bibliothèque de client Python, vous connecter au compte, effectuer des opérations courantes et interroger vos exemples de données finaux.

Documentation de référence de l'API | Code source de la bibliothèque | Package (PyPI)

Conditions préalables

  • Un abonnement Azure

    • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
  • Dernière version d’Azure CLI dans Azure Cloud Shell.

    • Si vous préférez exécuter des commandes de référence CLI localement, connectez-vous à Azure CLI à l’aide de la az login commande.
  • Python 3.12 ou version ultérieure

Configuration

Tout d’abord, configurez l’environnement de compte et de développement pour ce guide. Cette section vous guide tout au long du processus de création d’un compte, de l’obtention de ses informations d’identification, puis de la préparation de votre environnement de développement.

Créer un compte

Commencez par créer une API pour un compte Apache Cassandra. Après la création du compte, créez l’espace de clés et les ressources de table.

  1. Si vous n’avez pas encore de groupe de ressources cible, utilisez la az group create commande pour créer un groupe de ressources dans votre abonnement.

    az group create \
        --name "<resource-group-name>" \
        --location "<location>"
    
  2. Utilisez la az cosmosdb create commande pour créer un compte Azure Cosmos DB pour Apache Cassandra avec les paramètres par défaut.

    az cosmosdb create \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --locations "regionName=<location>" \
        --capabilities "EnableCassandra"
    
  3. Créez un nouveau keyspace en utilisant az cosmosdb cassandra keyspace create nommé cosmicworks.

    az cosmosdb cassandra keyspace create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --name "cosmicworks"
    
  4. Créez un objet JSON pour représenter votre schéma à l’aide d’une commande Bash multiligne. Ensuite, utilisez la az cosmosdb cassandra table create commande pour créer une table nommée products.

    schemaJson=$(cat <<EOF
    {
      "columns": [
        {
          "name": "id",
          "type": "text"
        },
        {
          "name": "name",
          "type": "text"
        },
        {
          "name": "category",
          "type": "text"
        },
        {
          "name": "quantity",
          "type": "int"
        },
        {
          "name": "price",
          "type": "decimal"
        },
        {
          "name": "clearance",
          "type": "boolean"
        }
      ],
      "partitionKeys": [
        {
          "name": "id"
        }
      ]
    }
    EOF
    )
    
    az cosmosdb cassandra table create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --keyspace-name "cosmicworks" \
        --name "product" \
        --schema "$schemaJson"
    

Obtenir les informations d’identification

À présent, obtenez le mot de passe de la bibliothèque cliente à utiliser pour créer une connexion au compte récemment créé.

  1. Utilisez az cosmosdb show pour obtenir le point de contact et le nom d'utilisateur du compte.

    az cosmosdb show \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --query "{username:name,contactPoint:documentEndpoint}"
    
  2. Enregistrez la valeur des propriétés contactPoint et username de la sortie des commandes précédentes. Ces valeurs de propriétés sont le point de contact et le nom d’utilisateur que vous utilisez plus loin dans ce guide pour vous connecter au compte avec la bibliothèque.

  3. Utilisez az cosmosdb keys list pour obtenir les clés du compte.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Enregistrez la valeur de la primaryMasterKey propriété à partir de la sortie des commandes précédentes. La valeur de cette propriété est le mot de passe que vous utilisez plus loin dans ce guide pour vous connecter au compte avec la bibliothèque.

Préparer l’environnement de développement

Ensuite, configurez votre environnement de développement avec un nouveau projet et la bibliothèque cliente. Cette étape est la dernière condition requise avant de passer au reste de ce guide.

  1. Démarrez dans un répertoire vide.

  2. Importez le cassandra-driver package à partir de l’index de package Python (PyPI).

    pip install cassandra-driver
    
  3. Ouvrez le fichier app.py.

Modèle d'objet

Descriptif
Cluster Représente une connexion spécifique à un cluster

Exemples de code

Authentifier le client

Commencez par authentifier le client à l’aide des informations d’identification collectées précédemment dans ce guide.

  1. Ouvrez le fichier app.py dans votre environnement de développement intégré (IDE).

  2. Importez les types suivants à partir du cassandra-driver module :

    • cassandra.cluster.Cluster
    • cassandra.auth.PlainTextAuthProvider
    from cassandra.cluster import Cluster
    from cassandra.auth import PlainTextAuthProvider
    
  3. Importez les types suivants à partir du ssl module :

    • ssl.PROTOCOL_TLS_CLIENT
    • ssl.SSLContext
    • ssl.CERT_NONE
    from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONE
    
  4. Créez des variables de chaîne pour les informations d’identification collectées précédemment dans ce guide. Nommez les variables username, passwordet contactPoint.

    username = "<username>"
    password = "<password>"
    contactPoint = "<contact-point>"
    
  5. Configurez l’option SSLContext en créant une variable nommée ssl_context, en définissant le protocole PROTOCOL_TLS_CLIENTsur , en désactivant la vérification du nom d’hôte et en définissant le mode CERT_NONEde vérification sur .

    ssl_context = SSLContext(PROTOCOL_TLS_CLIENT)
    ssl_context.check_hostname = False
    ssl_context.verify_mode = CERT_NONE
    
  6. Créez un PlainTextAuthProvider objet avec les informations d’identification spécifiées dans les étapes précédentes. Stockez le résultat dans une variable nommée auth_provider.

    auth_provider = PlainTextAuthProvider(username=username, password=password)
    
  7. Créez un Cluster objet à l’aide des informations d’identification et des variables de configuration créées dans les étapes précédentes. Stockez le résultat dans une variable nommée cluster.

    cluster = Cluster([contactPoint], port=10350, auth_provider=auth_provider, ssl_context=ssl_context)
    
  8. Connectez-vous au cluster.

    session = cluster.connect("cosmicworks")
    

Avertissement

La validation TLS (Transport Layer Security) complète est désactivée dans ce guide pour simplifier l’authentification. Pour les déploiements de production, activez entièrement la validation.

Effectuer un upsert de données

Ensuite, insérer ou mettre à jour de nouvelles données dans une table. Upserting garantit que les données sont créées ou remplacées de manière appropriée selon que les mêmes données existent déjà dans la table.

  1. Créez une variable de chaîne nommée insertQuery avec la requête CQL (Cassandra Query Language) pour insérer une nouvelle ligne.

    insertQuery = """
    INSERT INTO
        product (id, name, category, quantity, price, clearance)
    VALUES
        (%(id)s, %(name)s, %(category)s, %(quantity)s, %(price)s, %(clearance)s)
    """
    
  2. Créez un objet avec différentes propriétés d’un nouveau produit et stockez-le dans une variable nommée params.

    params = {
        "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "name": "Yamba Surfboard",
        "category": "gear-surf-surfboards",
        "quantity": 12,
        "price": 850.00,
        "clearance": False
    }
    
  3. Utilisez la execute fonction pour exécuter la requête avec les paramètres spécifiés.

    session.execute(insertQuery, params)
    

Lire les données

Lisez ensuite les données qui ayant précédemment fait l’objet d’un upsert dans la table.

  1. Créez une variable de chaîne nommée readQuery avec une requête CQL qui correspond aux éléments avec le même id champ.

    readQuery = "SELECT * FROM product WHERE id = %s LIMIT 1"
    
  2. Créez une variable de chaîne nommée id avec la même valeur que le produit créé précédemment dans ce guide.

    id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
    
  3. Utilisez la fonction execute pour exécuter la requête stockée dans readQuery, en passant la variable id comme argument. Stockez le résultat dans une variable nommée readResults.

    readResults = session.execute(readQuery, (id,))
    
  4. Utilisez la one fonction pour obtenir le résultat unique attendu. Stockez ce résultat unique dans une variable nommée matchedProduct.

    matchedProduct = readResults.one()
    

Rechercher des données

Enfin, utilisez une requête pour rechercher toutes les données qui correspondent à un filtre spécifique dans la table.

  1. Créez des variables de chaîne nommées findQuery et category avec la requête CQL et le paramètre requis.

    findQuery = "SELECT * FROM product WHERE category = %s ALLOW FILTERING"
    category = "gear-surf-surfboards"
    
  2. Utilisez les deux variables de chaîne et la execute fonction pour interroger plusieurs résultats. Stockez le résultat de cette requête dans une variable nommée findResults.

    findResults = session.execute(findQuery, (category,))
    
  3. Utilisez une for boucle pour itérer sur les résultats de la requête.

    for row in findResults:
        # Do something here with each result
    

Exécuter le code

Exécutez l’application nouvellement créée à l’aide d’un terminal dans votre répertoire d’application.

python app.py

Nettoyer les ressources

Lorsque vous n’avez plus besoin du compte, supprimez le compte de votre abonnement Azure en supprimant la ressource.

az cosmosdb delete \
    --resource-group "<resource-group-name>" \
    --name "<account-name>"

Étape suivante