Freigeben über


Schnellstart: Azure Cosmos DB für Apache Cassandra-Clientbibliothek für Python

Erste Schritte mit der Azure Cosmos DB für Apache Cassandra-Clientbibliothek für Python zum Speichern, Verwalten und Abfragen unstrukturierter Daten. Führen Sie die Schritte in diesem Handbuch aus, um ein neues Konto zu erstellen, eine Python-Clientbibliothek zu installieren, eine Verbindung mit dem Konto herzustellen, allgemeine Vorgänge auszuführen und Ihre endgültigen Beispieldaten abzufragen.

API-Referenzdokumentation | Quellcode | der BibliothekPaket (PyPI)

Voraussetzungen

  • Ein Azure-Abonnement

    • Wenn Sie noch kein Azure-Abonnement haben, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.
  • Die neueste Version der Azure CLI in Azure Cloud Shell.

    • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen möchten, melden Sie sich mit dem az login Befehl bei der Azure CLI an.
  • Python 3.12 oder höher

Einrichten

Richten Sie zunächst die Konto- und Entwicklungsumgebung für diesen Leitfaden ein. In diesem Abschnitt erfahren Sie, wie Sie ein Konto erstellen, die Anmeldeinformationen des Kontos abrufen und Ihre Entwicklungsumgebung vorbereiten.

Erstellen eines Kontos

Erstellen Sie zunächst eine API für Apache Cassandra-Konto. Nachdem das Konto erstellt wurde, erstellen Sie die Keyspace- und Tabellen-Ressourcen.

  1. Wenn Sie noch keine Zielressourcengruppe haben, verwenden Sie den az group create Befehl, um eine neue Ressourcengruppe in Ihrem Abonnement zu erstellen.

    az group create \
        --name "<resource-group-name>" \
        --location "<location>"
    
  2. Verwenden Sie den az cosmosdb create Befehl, um ein neues Azure Cosmos DB für Apache Cassandra-Konto mit Standardeinstellungen zu erstellen.

    az cosmosdb create \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --locations "regionName=<location>" \
        --capabilities "EnableCassandra"
    
  3. Erstellen Sie einen neuen Keyspace mit az cosmosdb cassandra keyspace create namens cosmicworks.

    az cosmosdb cassandra keyspace create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --name "cosmicworks"
    
  4. Erstellen Sie ein neues JSON-Objekt, um Ihr Schema mithilfe eines mehrzeiligen Bash-Befehls darzustellen. Verwenden Sie dann den az cosmosdb cassandra table create Befehl, um eine neue Tabelle mit dem Namen productszu erstellen.

    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"
    

Abrufen von Anmeldeinformationen

Rufen Sie nun das Kennwort für die Clientbibliothek ab, um eine Verbindung mit dem vor Kurzem erstellten Konto herzustellen.

  1. Verwenden Sie az cosmosdb show, um den Kontaktpunkt und den Benutzernamen für das Konto abzurufen.

    az cosmosdb show \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --query "{username:name,contactPoint:documentEndpoint}"
    
  2. Notieren Sie den Wert der contactPoint Und username Eigenschaften aus der Ausgabe der vorherigen Befehle. Die Werte dieser Eigenschaften sind der Kontaktpunkt und der Benutzername , den Sie später in diesem Handbuch verwenden, um eine Verbindung mit dem Konto mit der Bibliothek herzustellen.

  3. Verwenden Sie az cosmosdb keys list, um die Schlüssel für das Konto zu erhalten.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Notieren Sie den Wert der Eigenschaft primaryMasterKey aus der Ausgabe des vorherigen Befehls. Der Wert dieser Eigenschaft ist das Kennwort , das Sie später in diesem Handbuch zum Herstellen einer Verbindung mit dem Konto mit der Bibliothek verwenden.

Vorbereiten der Entwicklungsumgebung

Konfigurieren Sie dann Ihre Entwicklungsumgebung mit einem neuen Projekt und der Clientbibliothek. Dieser Schritt ist die letzte erforderliche Voraussetzung, bevor Sie mit dem Rest dieses Handbuchs fortfahren.

  1. Beginnen Sie in einem leeren Verzeichnis.

  2. Importieren Sie das cassandra-driver Paket aus dem Python-Paketindex (PyPI).

    pip install cassandra-driver
    
  3. Erstellen Sie die Datei app.py.

Objektmodell

BESCHREIBUNG
Cluster Stellt eine bestimmte Verbindung zu einem Cluster dar.

Code-Beispiele

Authentifizieren des Clients

Beginnen Sie damit, den Client mithilfe der Anmeldeinformationen zu authentifizieren, die weiter oben in diesem Leitfaden gesammelt wurden.

  1. Öffnen Sie die datei app.py in Ihrer integrierten Entwicklungsumgebung (IDE).

  2. Importieren Sie die folgenden Typen aus dem cassandra-driver Modul:

    • cassandra.cluster.Cluster
    • cassandra.auth.PlainTextAuthProvider
    from cassandra.cluster import Cluster
    from cassandra.auth import PlainTextAuthProvider
    
  3. Importieren Sie die folgenden Typen aus dem ssl Modul:

    • ssl.PROTOCOL_TLS_CLIENT
    • ssl.SSLContext
    • ssl.CERT_NONE
    from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONE
    
  4. Erstellen Sie String-Variablen für die zuvor in diesem Leitfaden gesammelten Anmeldeinformationen. Benennen Sie die Variablen username, passwordund contactPoint.

    username = "<username>"
    password = "<password>"
    contactPoint = "<contact-point>"
    
  5. Konfigurieren Sie die SSLContext Konfiguration durch Erstellen einer neuen Variablen namens ssl_context, Festlegen des Protokolls auf PROTOCOL_TLS_CLIENT, Deaktivieren der Hostnamenüberprüfung und Festlegen des Überprüfungsmodus auf CERT_NONE.

    ssl_context = SSLContext(PROTOCOL_TLS_CLIENT)
    ssl_context.check_hostname = False
    ssl_context.verify_mode = CERT_NONE
    
  6. Erstellen Sie ein neues PlainTextAuthProvider Objekt mit den in den vorherigen Schritten angegebenen Anmeldeinformationen. Speichern Sie das Ergebnis in einer Variable namens auth_provider.

    auth_provider = PlainTextAuthProvider(username=username, password=password)
    
  7. Erstellen Sie ein Cluster Objekt mithilfe der Anmeldeinformationen und Konfigurationsvariablen, die in den vorherigen Schritten erstellt wurden. Speichern Sie das Ergebnis in einer Variable namens cluster.

    cluster = Cluster([contactPoint], port=10350, auth_provider=auth_provider, ssl_context=ssl_context)
    
  8. Verbinden mit dem Cluster

    session = cluster.connect("cosmicworks")
    

Warnung

Die vollständige TLS-Überprüfung (Transport Layer Security) ist in diesem Handbuch deaktiviert, um die Authentifizierung zu vereinfachen. Für Produktionsbereitstellungen, aktivieren Sie die Validierung vollständig.

Daten-Update durchführen

Als Nächstes fügen Sie neue Daten in eine Tabelle ein. Upserting stellt sicher, dass die Daten erstellt oder entsprechend ersetzt werden, je nachdem, ob die gleichen Daten bereits in der Tabelle vorhanden sind.

  1. Erstellen Sie eine neue Zeichenfolgenvariable insertQuery mit der Cassandra Query Language (CQL)-Abfrage zum Einfügen einer neuen Zeile.

    insertQuery = """
    INSERT INTO
        product (id, name, category, quantity, price, clearance)
    VALUES
        (%(id)s, %(name)s, %(category)s, %(quantity)s, %(price)s, %(clearance)s)
    """
    
  2. Erstellen Sie ein neues Objekt mit verschiedenen Eigenschaften eines neuen Produkts, und speichern Sie es in einer Variablen namens params.

    params = {
        "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "name": "Yamba Surfboard",
        "category": "gear-surf-surfboards",
        "quantity": 12,
        "price": 850.00,
        "clearance": False
    }
    
  3. Verwenden Sie die execute Funktion, um die Abfrage mit den angegebenen Parametern auszuführen.

    session.execute(insertQuery, params)
    

Daten lesen

Lesen Sie dann Daten, die zuvor in die Tabelle eingefügt wurden.

  1. Erstellen Sie eine neue Zeichenfolgenvariable namens readQuery, mit einer CQL-Abfrage, die Elemente mit demselben id Feld abgleicht.

    readQuery = "SELECT * FROM product WHERE id = %s LIMIT 1"
    
  2. Erstellen Sie eine Zeichenfolgenvariable id mit demselben Wert wie das zuvor in diesem Handbuch erstellte Produkt.

    id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
    
  3. Verwenden Sie die execute Funktion, um die in readQuery gespeicherte Abfrage auszuführen, und übergeben Sie dabei die id Variable als Argument. Speichern Sie das Ergebnis in einer Variable namens readResults.

    readResults = session.execute(readQuery, (id,))
    
  4. Verwenden Sie die one Funktion, um das erwartete einzelne Ergebnis zu erhalten. Speichern Sie dieses einzelne Ergebnis in einer Variablen mit dem Namen matchedProduct.

    matchedProduct = readResults.one()
    

Abfragedaten

Verwenden Sie schließlich eine Abfrage, um alle Daten zu finden, die einem bestimmten Filter in der Tabelle entsprechen.

  1. Erstellen Sie Zeichenfolgenvariablen namens findQuery und category mit der CQL-Abfrage und dem erforderlichen Parameter.

    findQuery = "SELECT * FROM product WHERE category = %s ALLOW FILTERING"
    category = "gear-surf-surfboards"
    
  2. Verwenden Sie die beiden Zeichenfolgenvariablen und die execute Funktion, um mehrere Ergebnisse abzufragen. Speichern Sie das Ergebnis dieser Abfrage in einer Variablen mit dem Namen findResults.

    findResults = session.execute(findQuery, (category,))
    
  3. Verwenden Sie eine for Schleife, um über die Abfrageergebnisse zu iterieren.

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

Ausführen des Codes

Führen Sie die neu erstellte Anwendung mit einem Terminal in Ihrem Anwendungsverzeichnis aus.

python app.py

Bereinigen von Ressourcen

Wenn Sie das Konto nicht mehr benötigen, entfernen Sie das Konto aus Ihrem Azure-Abonnement, indem Sie die Ressource löschen .

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

Nächster Schritt