Udostępnij za pomocą


Szybki start: biblioteka klienta usługi Azure Cosmos DB dla oprogramowania Apache Cassandra dla języka Python

Rozpocznij pracę z biblioteką klienta usługi Azure Cosmos DB for Apache Cassandra dla języka Python, aby przechowywać dane bez struktury i zarządzać nimi. Wykonaj kroki opisane w tym przewodniku, aby utworzyć nowe konto, zainstalować bibliotekę klienta języka Python, nawiązać połączenie z kontem, wykonać typowe operacje i wykonać zapytania dotyczące końcowych danych przykładowych.

Dokumentacja referencyjna API | Kod źródłowy biblioteki | Pakiet (PyPI)

Wymagania wstępne

  • Subskrypcja platformy Azure

    • Jeśli nie masz subskrypcji Azure, przed rozpoczęciem utwórz darmowe konto.
  • Środowisko Python w wersji 3.12 lub nowszej

Konfigurowanie

Najpierw skonfiguruj konto i środowisko programistyczne dla tego przewodnika. W tej sekcji przedstawiono proces tworzenia konta, uzyskiwania poświadczeń, a następnie przygotowywania środowiska deweloperskiego.

Tworzenie konta

Zacznij od utworzenia interfejsu API dla konta apache Cassandra. Po utworzeniu konta utwórz przestrzeń kluczy i zasoby tabeli.

  1. Jeśli nie masz jeszcze docelowej grupy zasobów, użyj az group create polecenia , aby utworzyć nową grupę zasobów w ramach subskrypcji.

    az group create \
        --name "<resource-group-name>" \
        --location "<location>"
    
  2. Użyj polecenia , az cosmosdb create aby utworzyć nowe konto usługi Azure Cosmos DB dla bazy danych Apache Cassandra z ustawieniami domyślnymi.

    az cosmosdb create \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --locations "regionName=<location>" \
        --capabilities "EnableCassandra"
    
  3. Utwórz nową przestrzeń kluczy za pomocą az cosmosdb cassandra keyspace create o nazwie cosmicworks.

    az cosmosdb cassandra keyspace create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --name "cosmicworks"
    
  4. Utwórz nowy obiekt JSON reprezentujący schemat przy użyciu wielolinijkowego polecenia Bash. Następnie użyj az cosmosdb cassandra table create polecenia , aby utworzyć nową tabelę o nazwie 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"
    

Pobieranie poświadczeń

Teraz pobierz hasło biblioteki klienta do utworzenia połączenia z niedawno utworzonym kontem.

  1. Użyj az cosmosdb show polecenia , aby uzyskać punkt kontaktu i nazwę użytkownika dla konta.

    az cosmosdb show \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --query "{username:name,contactPoint:documentEndpoint}"
    
  2. Zapisz wartości właściwości contactPoint i username z danych wyjściowych poprzednich poleceń. Wartości tych właściwości to punkt kontaktowy i nazwa użytkownika używana w dalszej części tego przewodnika w celu nawiązania połączenia z kontem z biblioteką.

  3. Użyj az cosmosdb keys list polecenia, aby pobrać klucze dla konta.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Zanotuj wartość właściwości primaryMasterKey z danych wyjściowych wcześniejszych poleceń. Wartość tej właściwości to hasło , którego użyjesz w dalszej części tego przewodnika, aby nawiązać połączenie z kontem z biblioteką.

Przygotowywanie środowiska projektowego

Następnie skonfiguruj środowisko deweloperskie przy użyciu nowego projektu i biblioteki klienta. Ten krok jest ostatnim wymaganiem wstępnym przed przejściem do pozostałej części tego przewodnika.

  1. Rozpocznij w pustym katalogu.

  2. Zaimportuj cassandra-driver pakiet z indeksu pakietów języka Python (PyPI).

    pip install cassandra-driver
    
  3. Utwórz plik app.py.

Model obiektów

Opis
Cluster Reprezentuje określone połączenie z klastrem

Przykłady kodu

Uwierzytelnianie klienta

Zacznij od uwierzytelnienia klienta przy użyciu poświadczeń zebranych wcześniej w tym przewodniku.

  1. Otwórz plik app.py w zintegrowanym środowisku projektowym (IDE).

  2. Zaimportuj następujące typy z modułu cassandra-driver :

    • cassandra.cluster.Cluster
    • cassandra.auth.PlainTextAuthProvider
    from cassandra.cluster import Cluster
    from cassandra.auth import PlainTextAuthProvider
    
  3. Zaimportuj następujące typy z modułu ssl :

    • ssl.PROTOCOL_TLS_CLIENT
    • ssl.SSLContext
    • ssl.CERT_NONE
    from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONE
    
  4. Utwórz zmienne tekstowe dla poświadczeń zebranych wcześniej w tym przewodniku. Nazwij zmienne username, passwordi contactPoint.

    username = "<username>"
    password = "<password>"
    contactPoint = "<contact-point>"
    
  5. Skonfiguruj SSLContext, tworząc nową zmienną o nazwie ssl_context, ustawiając protokół na PROTOCOL_TLS_CLIENT, wyłączając sprawdzanie nazwy hosta i ustawiając tryb weryfikacji na CERT_NONE.

    ssl_context = SSLContext(PROTOCOL_TLS_CLIENT)
    ssl_context.check_hostname = False
    ssl_context.verify_mode = CERT_NONE
    
  6. Utwórz nowy PlainTextAuthProvider obiekt z poświadczeniami określonymi w poprzednich krokach. Zapisz wynik w zmiennej o nazwie auth_provider.

    auth_provider = PlainTextAuthProvider(username=username, password=password)
    
  7. Cluster Utwórz obiekt przy użyciu zmiennych poświadczeń i konfiguracji utworzonych w poprzednich krokach. Zapisz wynik w zmiennej o nazwie cluster.

    cluster = Cluster([contactPoint], port=10350, auth_provider=auth_provider, ssl_context=ssl_context)
    
  8. Połącz się z klastrem.

    session = cluster.connect("cosmicworks")
    

Ostrzeżenie

Pełna weryfikacja zabezpieczeń warstwy transportu (TLS) jest wyłączona w tym przewodniku, aby uprościć uwierzytelnianie. W przypadku wdrożeń produkcyjnych w pełni włącz walidację.

Aktualizuj lub dodaj dane

Następnie dodaj nowe dane do tabeli. Upserting gwarantuje, że dane są tworzone lub zastępowane odpowiednio w zależności od tego, czy te same dane już istnieją w tabeli.

  1. Utwórz nową zmienną ciągu o nazwie insertQuery z zapytaniem Języka zapytań Cassandra (CQL) w celu wstawienia nowego wiersza.

    insertQuery = """
    INSERT INTO
        product (id, name, category, quantity, price, clearance)
    VALUES
        (%(id)s, %(name)s, %(category)s, %(quantity)s, %(price)s, %(clearance)s)
    """
    
  2. Utwórz nowy obiekt z różnymi właściwościami nowego produktu i zapisz go w zmiennej o nazwie params.

    params = {
        "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "name": "Yamba Surfboard",
        "category": "gear-surf-surfboards",
        "quantity": 12,
        "price": 850.00,
        "clearance": False
    }
    
  3. execute Użyj funkcji , aby uruchomić zapytanie z określonymi parametrami.

    session.execute(insertQuery, params)
    

Odczyt danych

Następnie odczytaj dane, które zostały wcześniej dodane lub zmodyfikowane w tabeli.

  1. Utwórz nową zmienną ciągu o nazwie readQuery z zapytaniem CQL, które pasuje do elementów z tym samym id polem.

    readQuery = "SELECT * FROM product WHERE id = %s LIMIT 1"
    
  2. Utwórz zmienną ciągu o nazwie id o tej samej wartości co produkt utworzony wcześniej w tym przewodniku.

    id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
    
  3. Użyj funkcji execute , aby uruchomić zapytanie przechowywane w readQuery, przekazując zmienną id jako argument. Zapisz wynik w zmiennej o nazwie readResults.

    readResults = session.execute(readQuery, (id,))
    
  4. Użyj funkcji one do uzyskania oczekiwanego pojedynczego wyniku. Zapisz ten pojedynczy wynik w zmiennej o nazwie matchedProduct.

    matchedProduct = readResults.one()
    

Wykonywanie zapytań o dane

Na koniec użyj zapytania, aby znaleźć wszystkie dane zgodne z określonym filtrem w tabeli.

  1. Utwórz zmienne ciągu o nazwie findQuery i category za pomocą zapytania CQL i wymaganego parametru.

    findQuery = "SELECT * FROM product WHERE category = %s ALLOW FILTERING"
    category = "gear-surf-surfboards"
    
  2. Użyj dwóch zmiennych ciągów i funkcji execute, aby wykonywać zapytania o wiele wyników. Zapisz wynik tego zapytania w zmiennej o nazwie findResults.

    findResults = session.execute(findQuery, (category,))
    
  3. Użyj pętli for, aby iterować wyniki zapytania.

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

Uruchamianie kodu

Uruchom nowo utworzoną aplikację przy użyciu terminalu w katalogu aplikacji.

python app.py

Uprzątnij zasoby

Jeśli konto nie jest już potrzebne, usuń konto z subskrypcji platformy Azure, usuwając zasób.

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

Następny krok