Dela via


Snabbstart: Azure Cosmos DB för Apache Cassandra-klientbiblioteket för Python

Kom igång med klientbiblioteket för Azure Cosmos DB för Apache Cassandra för Python för att lagra, hantera och fråga ostrukturerade data. Följ stegen i den här guiden för att skapa ett nytt konto, installera ett Python-klientbibliotek, ansluta till kontot, utföra vanliga åtgärder och köra frågor mot dina slutliga exempeldata.

API-referensdokumentation | Källkod | för bibliotekPaket (PyPI)

Förutsättningar

  • En prenumeration på Azure

    • Om du inte har en Azure-prenumeration, skapa ett gratis konto innan du börjar.
  • Den senaste versionen av Azure CLI i Azure Cloud Shell.

    • Om du föredrar att köra CLI-referenskommandon lokalt loggar du in på Azure CLI med hjälp az login av kommandot .
  • Python 3.12 eller senare

Förbereda

Konfigurera först konto- och utvecklingsmiljön för den här guiden. Det här avsnittet beskriver hur du skapar ett konto, hämtar dess autentiseringsuppgifter och sedan förbereder utvecklingsmiljön.

Skapa ett konto

Börja med att skapa ett API för Apache Cassandra-konto. När kontot har skapats skapar du nyckelområdet och tabellresurserna.

  1. Om du inte redan har en målresursgrupp använder du az group create kommandot för att skapa en ny resursgrupp i din prenumeration.

    az group create \
        --name "<resource-group-name>" \
        --location "<location>"
    
  2. az cosmosdb create Använd kommandot för att skapa ett nytt Azure Cosmos DB för Apache Cassandra-konto med standardinställningar.

    az cosmosdb create \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --locations "regionName=<location>" \
        --capabilities "EnableCassandra"
    
  3. Skapa ett nytt keyspace med az cosmosdb cassandra keyspace create namnet cosmicworks.

    az cosmosdb cassandra keyspace create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --name "cosmicworks"
    
  4. Skapa ett nytt JSON-objekt som representerar schemat med hjälp av ett Bash-kommando med flera rader. az cosmosdb cassandra table create Använd sedan kommandot för att skapa en ny tabell med namnet 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"
    

Hämta autentiseringsuppgifter

Hämta nu lösenordet för klientbiblioteket som ska användas för att skapa en anslutning till det nyligen skapade kontot.

  1. Använd az cosmosdb show för att hämta kontaktpunkten och användarnamnet för kontot.

    az cosmosdb show \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --query "{username:name,contactPoint:documentEndpoint}"
    
  2. Registrera värdet för contactPoint egenskaperna och username från föregående kommandons utdata. Dessa egenskapers värden är kontaktpunkten och användarnamnet som du använder senare i den här guiden för att ansluta till kontot med biblioteket.

  3. Använd az cosmosdb keys list för att hämta nycklarna för kontot.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Registrera värdet för primaryMasterKey egenskapen från föregående kommandons utdata. Den här egenskapens värde är det lösenord som du använder senare i den här guiden för att ansluta till kontot med biblioteket.

Förbereda utvecklingsmiljön

Konfigurera sedan utvecklingsmiljön med ett nytt projekt och klientbiblioteket. Det här steget är det sista nödvändiga kravet innan du går vidare till resten av den här guiden.

  1. Börja i en tom katalog.

  2. cassandra-driver Importera paketet från Python Package Index (PyPI).

    pip install cassandra-driver
    
  3. Skapa filen app.py .

Objektmodell

Beskrivning
Cluster Representerar en specifik anslutning till ett kluster

Kodexempel

Autentisera klient

Börja med att autentisera klienten med de autentiseringsuppgifter som samlats in tidigare i den här guiden.

  1. Öppna filen app.py i din integrerade utvecklingsmiljö (IDE).

  2. Importera följande typer från modulen cassandra-driver :

    • cassandra.cluster.Cluster
    • cassandra.auth.PlainTextAuthProvider
    from cassandra.cluster import Cluster
    from cassandra.auth import PlainTextAuthProvider
    
  3. Importera följande typer från modulen ssl :

    • ssl.PROTOCOL_TLS_CLIENT
    • ssl.SSLContext
    • ssl.CERT_NONE
    from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONE
    
  4. Skapa strängvariabler för de autentiseringsuppgifter som samlats in tidigare i den här guiden. Ge variablerna username, password och contactPoint namn.

    username = "<username>"
    password = "<password>"
    contactPoint = "<contact-point>"
    
  5. SSLContext Konfigurera genom att skapa en ny variabel med namnet ssl_context, ställa in protokollet på PROTOCOL_TLS_CLIENT, inaktivera värdnamnskontrollen och ställa in verifieringsläget på CERT_NONE.

    ssl_context = SSLContext(PROTOCOL_TLS_CLIENT)
    ssl_context.check_hostname = False
    ssl_context.verify_mode = CERT_NONE
    
  6. Skapa ett nytt PlainTextAuthProvider objekt med de autentiseringsuppgifter som angavs i föregående steg. Lagra resultatet i en variabel med namnet auth_provider.

    auth_provider = PlainTextAuthProvider(username=username, password=password)
    
  7. Skapa ett Cluster objekt med hjälp av variablerna för autentiseringsuppgifter och konfiguration som skapades i föregående steg. Lagra resultatet i en variabel med namnet cluster.

    cluster = Cluster([contactPoint], port=10350, auth_provider=auth_provider, ssl_context=ssl_context)
    
  8. Anslut till klustret.

    session = cluster.connect("cosmicworks")
    

Varning

Fullständig TLS-validering (Transport Layer Security) är inaktiverad i den här guiden för att förenkla autentiseringen. Aktivera validering fullt ut för produktionsdistributioner.

Infoga eller uppdatera data

Därefter ökar du nya data till en tabell. Upserting säkerställer att data skapas eller ersätts på lämpligt sätt beroende på om samma data redan finns i tabellen.

  1. Skapa en ny strängvariabel med namnet insertQuery med frågan Cassandra Query Language (CQL) för att infoga en ny rad.

    insertQuery = """
    INSERT INTO
        product (id, name, category, quantity, price, clearance)
    VALUES
        (%(id)s, %(name)s, %(category)s, %(quantity)s, %(price)s, %(clearance)s)
    """
    
  2. Skapa ett nytt objekt med olika egenskaper för en ny produkt och lagra det i en variabel med namnet params.

    params = {
        "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "name": "Yamba Surfboard",
        "category": "gear-surf-surfboards",
        "quantity": 12,
        "price": 850.00,
        "clearance": False
    }
    
  3. execute Använd funktionen för att köra frågan med de angivna parametrarna.

    session.execute(insertQuery, params)
    

Läs data

Läs sedan data som tidigare har laddats upp i tabellen.

  1. Skapa en ny strängvariabel med namnet readQuery med en CQL-fråga som matchar objekt med samma id fält.

    readQuery = "SELECT * FROM product WHERE id = %s LIMIT 1"
    
  2. Skapa en strängvariabel id med namnet med samma värde som den produkt som skapades tidigare i den här guiden.

    id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
    
  3. Använd execute-funktionen för att köra frågan som är lagrad i readQuery genom att använda variabeln id som ett argument. Lagra resultatet i en variabel med namnet readResults.

    readResults = session.execute(readQuery, (id,))
    
  4. one Använd funktionen för att hämta det förväntade enskilda resultatet. Lagra det här enskilda resultatet i en variabel med namnet matchedProduct.

    matchedProduct = readResults.one()
    

Fråga efter data

Slutligen använder du en fråga för att hitta alla data som matchar ett specifikt filter i tabellen.

  1. Skapa strängvariabler med namnet findQuery och category med CQL-frågan och den obligatoriska parametern.

    findQuery = "SELECT * FROM product WHERE category = %s ALLOW FILTERING"
    category = "gear-surf-surfboards"
    
  2. Använd de två strängvariablerna och execute funktionen för att köra frågor mot flera resultat. Lagra resultatet av den här frågan i en variabel med namnet findResults.

    findResults = session.execute(findQuery, (category,))
    
  3. Använd en for loop för att iterera över frågeresultaten.

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

Kör koden

Kör det nyligen skapade programmet med hjälp av en terminal i programkatalogen.

python app.py

Rensa resurser

När du inte längre behöver kontot tar du bort kontot från din Azure-prenumeration genom att ta bort resursen.

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

Nästa steg