Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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 logincommande.
- Si vous préférez exécuter des commandes de référence CLI localement, connectez-vous à Azure CLI à l’aide de la
- 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.
Si vous n’avez pas encore de groupe de ressources cible, utilisez la
az group createcommande pour créer un groupe de ressources dans votre abonnement.az group create \ --name "<resource-group-name>" \ --location "<location>"Utilisez la
az cosmosdb createcommande 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"Créez un nouveau keyspace en utilisant
az cosmosdb cassandra keyspace createnommécosmicworks.az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"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 createcommande pour créer une table nomméeproducts.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éé.
Utilisez
az cosmosdb showpour 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}"Enregistrez la valeur des propriétés
contactPointetusernamede 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.Utilisez
az cosmosdb keys listpour obtenir les clés du compte.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Enregistrez la valeur de la
primaryMasterKeyproprié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.
Démarrez dans un répertoire vide.
Importez le
cassandra-driverpackage à partir de l’index de package Python (PyPI).pip install cassandra-driverOuvrez 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.
Ouvrez le fichier app.py dans votre environnement de développement intégré (IDE).
Importez les types suivants à partir du
cassandra-drivermodule :cassandra.cluster.Clustercassandra.auth.PlainTextAuthProvider
from cassandra.cluster import Cluster from cassandra.auth import PlainTextAuthProviderImportez les types suivants à partir du
sslmodule :ssl.PROTOCOL_TLS_CLIENTssl.SSLContextssl.CERT_NONE
from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONECréez des variables de chaîne pour les informations d’identification collectées précédemment dans ce guide. Nommez les variables
username,passwordetcontactPoint.username = "<username>" password = "<password>" contactPoint = "<contact-point>"Configurez l’option
SSLContexten créant une variable nomméessl_context, en définissant le protocolePROTOCOL_TLS_CLIENTsur , en désactivant la vérification du nom d’hôte et en définissant le modeCERT_NONEde vérification sur .ssl_context = SSLContext(PROTOCOL_TLS_CLIENT) ssl_context.check_hostname = False ssl_context.verify_mode = CERT_NONECréez un
PlainTextAuthProviderobjet avec les informations d’identification spécifiées dans les étapes précédentes. Stockez le résultat dans une variable nomméeauth_provider.auth_provider = PlainTextAuthProvider(username=username, password=password)Créez un
Clusterobjet à 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éecluster.cluster = Cluster([contactPoint], port=10350, auth_provider=auth_provider, ssl_context=ssl_context)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.
Créez une variable de chaîne nommée
insertQueryavec 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) """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 }Utilisez la
executefonction 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.
Créez une variable de chaîne nommée
readQueryavec une requête CQL qui correspond aux éléments avec le mêmeidchamp.readQuery = "SELECT * FROM product WHERE id = %s LIMIT 1"Créez une variable de chaîne nommée
idavec la même valeur que le produit créé précédemment dans ce guide.id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"Utilisez la fonction
executepour exécuter la requête stockée dansreadQuery, en passant la variableidcomme argument. Stockez le résultat dans une variable nomméereadResults.readResults = session.execute(readQuery, (id,))Utilisez la
onefonction pour obtenir le résultat unique attendu. Stockez ce résultat unique dans une variable nomméematchedProduct.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.
Créez des variables de chaîne nommées
findQueryetcategoryavec la requête CQL et le paramètre requis.findQuery = "SELECT * FROM product WHERE category = %s ALLOW FILTERING" category = "gear-surf-surfboards"Utilisez les deux variables de chaîne et la
executefonction pour interroger plusieurs résultats. Stockez le résultat de cette requête dans une variable nomméefindResults.findResults = session.execute(findQuery, (category,))Utilisez une
forboucle 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>"