Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Ga aan de slag met de Azure Cosmos DB voor Apache Cassandra-clientbibliotheek voor Python om ongestructureerde gegevens op te slaan, te beheren en er query's op uit te voeren. Volg de stappen in deze handleiding om een nieuw account te maken, een Python-clientbibliotheek te installeren, verbinding te maken met het account, algemene bewerkingen uit te voeren en uw uiteindelijke voorbeeldgegevens op te vragen.
API-referentiedocumentatie | Broncode van de bibliotheek | Pakket (PyPI)
Vereiste voorwaarden
Een Azure-abonnement
- Als je geen Azure-abonnement hebt, maak dan een gratis account aan voordat je begint.
De nieuwste versie van de Azure CLI in Azure Cloud Shell.
- Als u liever CLI-referentieopdrachten lokaal uitvoert, meldt u zich aan bij de Azure CLI met behulp van de
az loginopdracht.
- Als u liever CLI-referentieopdrachten lokaal uitvoert, meldt u zich aan bij de Azure CLI met behulp van de
- Python 3.12 of hoger
Installeren
Stel eerst de account- en ontwikkelomgeving voor deze handleiding in. In deze sectie wordt u begeleid bij het maken van een account, het verkrijgen van de referenties en het voorbereiden van uw ontwikkelomgeving.
Een account maken
Begin met het maken van een API voor een Apache Cassandra-account. Zodra het account is gemaakt, maakt u de keyspace- en tabelbronnen.
Als u nog geen doelresourcegroep hebt, gebruikt u de
az group createopdracht om een nieuwe resourcegroep in uw abonnement te maken.az group create \ --name "<resource-group-name>" \ --location "<location>"Gebruik de
az cosmosdb createopdracht om een nieuw Azure Cosmos DB voor Apache Cassandra-account te maken met standaardinstellingen.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableCassandra"Maak een nieuwe keyspace met
az cosmosdb cassandra keyspace createen noem dezecosmicworks.az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"Maak een nieuw JSON-object om uw schema weer te geven met behulp van een Bash-opdracht met meerdere regels. Gebruik vervolgens de opdracht om een nieuwe tabel met de
az cosmosdb cassandra table createnaamproductste maken.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"
Referenties ophalen
Haal nu het wachtwoord op dat de clientbibliotheek moet gebruiken om een verbinding te maken met het onlangs gemaakte account.
Gebruik
az cosmosdb showdit om het contactpunt en de gebruikersnaam voor het account op te halen.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"Noteer de waarde van de
contactPointenusernameeigenschappen uit de uitvoer van de vorige opdrachten. De waarden van deze eigenschappen zijn het contactpunt en de gebruikersnaam die u verderop in deze handleiding gebruikt om verbinding te maken met het account met de bibliotheek.Gebruik
az cosmosdb keys listom de sleutels op te halen voor het account.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Noteer de waarde van de
primaryMasterKeyeigenschap uit de uitvoer van de vorige opdrachten. De waarde van deze eigenschap is het wachtwoord dat u verderop in deze handleiding gebruikt om verbinding te maken met het account met de bibliotheek.
Ontwikkelomgeving voorbereiden
Configureer vervolgens uw ontwikkelomgeving met een nieuw project en de clientbibliotheek. Deze stap is het laatste vereiste voordat u verdergaat met de rest van deze handleiding.
Begin in een lege map.
Importeer het
cassandra-driverpakket uit de Python Package Index (PyPI).pip install cassandra-driverMaak het bestand app.py .
Objectmodel
| Beschrijving | |
|---|---|
Cluster |
Vertegenwoordigt een specifieke verbinding met een cluster |
Codevoorbeelden
Client verifiëren
Begin met het authentificeren van de client met behulp van de inloggegevens die eerder in deze handleiding zijn verzameld.
Open het bestand app.py in uw IDE (Integrated Development Environment).
Importeer de volgende typen uit de
cassandra-drivermodule:cassandra.cluster.Clustercassandra.auth.PlainTextAuthProvider
from cassandra.cluster import Cluster from cassandra.auth import PlainTextAuthProviderImporteer de volgende typen uit de
sslmodule:ssl.PROTOCOL_TLS_CLIENTssl.SSLContextssl.CERT_NONE
from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONEMaak stringvariabelen voor de in deze handleiding eerder verzamelde inloggegevens. Geef de variabelen
usernameeen naam enpasswordcontactPoint.username = "<username>" password = "<password>" contactPoint = "<contact-point>"Configureer de
SSLContextdoor een nieuwe variabele met de naamssl_contextte maken, het protocol opPROTOCOL_TLS_CLIENTin te stellen, de hostnaamcontrole uit te schakelen en de verificatiemodus in te stellen opCERT_NONE.ssl_context = SSLContext(PROTOCOL_TLS_CLIENT) ssl_context.check_hostname = False ssl_context.verify_mode = CERT_NONEMaak een nieuw
PlainTextAuthProviderobject met de referenties die zijn opgegeven in de vorige stappen. Sla het resultaat op in een variabele met de naamauth_provider.auth_provider = PlainTextAuthProvider(username=username, password=password)Maak een
Clusterobject met behulp van de referenties en configuratievariabelen die in de vorige stappen zijn gemaakt. Sla het resultaat op in een variabele met de naamcluster.cluster = Cluster([contactPoint], port=10350, auth_provider=auth_provider, ssl_context=ssl_context)Maak verbinding met het cluster.
session = cluster.connect("cosmicworks")
Waarschuwing
Volledige TLS-validatie (Transport Layer Security) is uitgeschakeld in deze handleiding om verificatie te vereenvoudigen. Voor productie-implementaties schakelt u validatie volledig in.
Gegevens bijwerken of toevoegen
Vervolgens worden nieuwe gegevens in een tabel geplaatst. Upserting zorgt ervoor dat de gegevens op de juiste wijze worden gemaakt of vervangen, afhankelijk van of dezelfde gegevens al in de tabel aanwezig zijn.
Maak een nieuwe tekenreeksvariabele
insertQuerymet de CQL-query (Cassandra Query Language) voor het invoegen van een nieuwe rij.insertQuery = """ INSERT INTO product (id, name, category, quantity, price, clearance) VALUES (%(id)s, %(name)s, %(category)s, %(quantity)s, %(price)s, %(clearance)s) """Maak een nieuw object met verschillende eigenschappen van een nieuw product en sla het op in een variabele met de naam
params.params = { "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "name": "Yamba Surfboard", "category": "gear-surf-surfboards", "quantity": 12, "price": 850.00, "clearance": False }Gebruik de
executefunctie om de query uit te voeren met de opgegeven parameters.session.execute(insertQuery, params)
Gegevens lezen
Lees vervolgens gegevens die eerder in de tabel zijn geplaatst.
Maak een nieuwe tekenreeksvariabele genaamd
readQuery, met een CQL-query die overeenkomt met items met hetzelfdeid-veld.readQuery = "SELECT * FROM product WHERE id = %s LIMIT 1"Maak een tekenreeksvariabele
idmet dezelfde waarde als het product dat eerder in deze handleiding is gemaakt.id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"Gebruik de
executefunctie om de query uit te voeren die is opgeslagen bijreadQueryhet doorgeven van deidvariabele als argument. Sla het resultaat op in een variabele met de naamreadResults.readResults = session.execute(readQuery, (id,))Gebruik de
onefunctie om het verwachte enkelvoudige resultaat op te halen. Sla dit enkele resultaat op in een variabele met de naammatchedProduct.matchedProduct = readResults.one()
Gegevens opvragen
Gebruik ten slotte een query om alle gegevens te vinden die overeenkomen met een specifiek filter in de tabel.
Maak tekenreeksvariabelen met de naam
findQueryencategorymet de CQL-query en de vereiste parameter.findQuery = "SELECT * FROM product WHERE category = %s ALLOW FILTERING" category = "gear-surf-surfboards"Gebruik de twee tekenreeksvariabelen en de
executefunctie om meerdere resultaten op te vragen. Sla het resultaat van deze query op in een variabele met de naamfindResults.findResults = session.execute(findQuery, (category,))Gebruik een
forlus om de queryresultaten te herhalen.for row in findResults: # Do something here with each result
De code uitvoeren
Voer de zojuist gemaakte toepassing uit met behulp van een terminal in uw toepassingsmap.
python app.py
De hulpbronnen opschonen
Wanneer u het account niet meer nodig hebt, verwijdert u het account uit uw Azure-abonnement door de resource te verwijderen .
az cosmosdb delete \
--resource-group "<resource-group-name>" \
--name "<account-name>"