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.
Belangrijk
Zoekt u een databaseoplossing voor grootschalige scenario's met een 99.999% SLA (Availability Service Level Agreement), directe automatische schaalaanpassing en automatische failover in meerdere regio's? Overweeg Azure Cosmos DB voor NoSQL.
Wilt u een OLAP-graaf (Online Analytical Processing) implementeren of een bestaande Apache Gremlin-toepassing migreren? Overweeg Graph in Microsoft Fabric.
Ga aan de slag met de Azure Cosmos DB voor Apache Gremlin-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.
| Broncodepakket bibliotheek (PyPi)
Vereisten
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
Instellen
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 Gremlin-account. Zodra het account is gemaakt, maakt u de database- en grafbronnen aan.
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 Gremlin-account te maken met standaardinstellingen.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableGremlin"Maak een nieuwe database met de
az cosmosdb gremlin database createnaamcosmicworks.az cosmosdb gremlin database create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"Gebruik de opdracht om een nieuwe grafiek met de
az cosmosdb gremlin graph createnaamproductste maken.az cosmosdb gremlin graph create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category"
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 showom de host voor het account te verkrijgen.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{host:name}"Noteer de waarde van de
hosteigenschap uit de uitvoer van de vorige opdrachten. De waarde van deze eigenschap is de host 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 de sleutel die 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
gremlinpythonpakket uit Python Package Index (PyPI).pip install gremlinpythonMaak het bestand app.py .
Objectmodel
| Beschrijving | |
|---|---|
GremlinClient |
Vertegenwoordigt de client die wordt gebruikt om verbinding te maken en te communiceren met de Gremlin-server |
GraphTraversalSource |
Wordt gebruikt om Gremlin-traversals te maken en uit te voeren |
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
gremlin_python.driverbibliotheek:gremlin_python.driver.clientgremlin_python.driver.serializer
from gremlin_python.driver import client, serializerMaak stringvariabelen voor de in deze handleiding eerder verzamelde inloggegevens. Geef de variabelen
hostnameeen naam enprimary_key.hostname = "<host>" primary_key = "<key>"Maak een
Clientobject met behulp van de referenties en configuratievariabelen die in de vorige stappen zijn gemaakt. Geef de variabeleclienteen naam.client = client.Client( url=f"wss://{hostname}.gremlin.cosmos.azure.com:443/", traversal_source="g", username="/dbs/cosmicworks/colls/products", password=f"{primary_key}", message_serializer=serializer.GraphSONSerializersV2d0() )
Gegevens invoegen
Voeg vervolgens nieuwe hoekpunt- en randgegevens in de grafiek in. Voordat u de nieuwe gegevens maakt, verwijdert u alle bestaande gegevens uit de grafiek.
Voer de
g.V().drop()query uit om alle hoekpunten en randen uit de grafiek te wissen.client.submit("g.V().drop()").all().result()Maak een Gremlin-query waarmee een hoekpunt wordt toegevoegd.
insert_vertex_query = ( "g.addV('product')" ".property('id', prop_id)" ".property('name', prop_name)" ".property('category', prop_category)" ".property('quantity', prop_quantity)" ".property('price', prop_price)" ".property('clearance', prop_clearance)" )Voeg een hoekpunt toe voor één product.
client.submit( message=insert_vertex_query, bindings={ "prop_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "prop_name": "Yamba Surfboard", "prop_category": "gear-surf-surfboards", "prop_quantity": 12, "prop_price": 850.00, "prop_clearance": False, }, ).all().result()Voeg nog twee hoekpunten toe voor twee extra producten.
client.submit( message=insert_vertex_query, bindings={ "prop_id": "bbbbbbbb-1111-2222-3333-cccccccccccc", "prop_name": "Montau Turtle Surfboard", "prop_category": "gear-surf-surfboards", "prop_quantity": 5, "prop_price": 600.00, "prop_clearance": True, }, ).all().result() client.submit( message=insert_vertex_query, bindings={ "prop_id": "cccccccc-2222-3333-4444-dddddddddddd", "prop_name": "Noosa Surfboard", "prop_category": "gear-surf-surfboards", "prop_quantity": 31, "prop_price": 1100.00, "prop_clearance": False, }, ).all().result()Maak een andere Gremlin-query waarmee een rand wordt toegevoegd.
insert_edge_query = ( "g.V([prop_partition_key, prop_source_id])" ".addE('replaces')" ".to(g.V([prop_partition_key, prop_target_id]))" )Voeg twee randen toe.
client.submit( message=insert_edge_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_source_id": "bbbbbbbb-1111-2222-3333-cccccccccccc", "prop_target_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", }, ).all().result() client.submit( message=insert_edge_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_source_id": "bbbbbbbb-1111-2222-3333-cccccccccccc", "prop_target_id": "cccccccc-2222-3333-4444-dddddddddddd", }, ).all().result()
Gegevens lezen
Lees vervolgens gegevens die eerder in de grafiek zijn ingevoegd.
Maak een query die een hoekpunt leest met behulp van de unieke id en partitiesleutelwaarde.
read_vertex_query = "g.V([prop_partition_key, prop_id])"Lees vervolgens een hoekpunt door de vereiste parameters op te geven.
matched_item = client.submit( message=read_vertex_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" } ).one()
Gegevens opvragen
Gebruik ten slotte een query om alle gegevens te vinden die overeenkomen met een specifieke doorkruising of filter in de grafiek.
Maak een query waarmee alle hoekpunten worden gevonden die vanuit een specifiek hoekpunt worden doorkruist.
find_vertices_query = ( "g.V().hasLabel('product')" ".has('category', prop_partition_key)" ".has('name', prop_name)" ".outE('replaces').inV()" )Voer de query uit waarin het
Montau Turtle Surfboardproduct wordt opgegeven.find_results = client.submit( message=find_vertices_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_name": "Montau Turtle Surfboard", }, ).all().result()Itereer over de queryresultaten.
for result in find_results: # 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
Resources 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>"