Megosztás a következőn keresztül:


Gyorsindítás: Azure Cosmos DB ügyfélkönyvtár Apache Cassandra-hoz Pythonhoz

Ismerkedés az Apache Cassandra Azure Cosmos DB-ügyfélkódtárával a Pythonhoz strukturálatlan adatok tárolásához, kezeléséhez és lekérdezéséhez. Az útmutató lépéseit követve hozzon létre egy új fiókot, telepítsen egy Python-ügyfélkódtárat, csatlakozzon a fiókhoz, hajtson végre gyakori műveleteket, és kérdezhesse le a végső mintaadatokat.

API-referenciadokumentáció | Kódtár forráskódja | Csomag (PyPI)

Előfeltételek

  • Azure-előfizetés

    • Ha nincs Azure-előfizetésed, hozz létre egy ingyenes fiókot mielőtt elkezdenéd.
  • Az Azure CLI legújabb verziója az Azure Cloud Shellben.

    • Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, jelentkezzen be az Azure CLI-be a az login parancs használatával.
  • Python 3.12 vagy újabb

Előkészítés

Először állítsa be az útmutató fiók- és fejlesztési környezetét. Ez a szakasz végigvezeti a fiók létrehozásának, a hitelesítő adatok beszerzésének, majd a fejlesztési környezet előkészítésének folyamatán.

Fiók létrehozása

Először hozzon létre egy API-t apache Cassandra-fiókhoz. A fiók létrehozása után hozza létre a kulcsteret és a táblaerőforrásokat.

  1. Ha még nincs célerőforráscsoportja, a az group create paranccsal hozzon létre egy új erőforráscsoportot az előfizetésben.

    az group create \
        --name "<resource-group-name>" \
        --location "<location>"
    
  2. az cosmosdb create A paranccsal hozzon létre egy új Azure Cosmos DB-fiókot az Apache Cassandra-fiókhoz alapértelmezett beállításokkal.

    az cosmosdb create \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --locations "regionName=<location>" \
        --capabilities "EnableCassandra"
    
  3. Hozzon létre egy új kulcsteret az cosmosdb cassandra keyspace create használatával, amit cosmicworks nevére elnevezett.

    az cosmosdb cassandra keyspace create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --name "cosmicworks"
    
  4. Hozzon létre egy új JSON-objektumot, amely egy többsoros Bash-paranccsal ábrázolja a sémát. Ezután a az cosmosdb cassandra table create paranccsal hozzon létre egy új táblát.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"
    

Hitelesítő adatok lekérése

Most szerezze be az ügyfélkódtár jelszavát, amellyel kapcsolatot hozhat létre a nemrég létrehozott fiókkal.

  1. A fiók kapcsolattartási pontjának és felhasználónevének lekérésére használható az cosmosdb show .

    az cosmosdb show \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --query "{username:name,contactPoint:documentEndpoint}"
    
  2. Jegyezze le az contactPoint és username tulajdonságok értékét az előző parancsok kimenetéből. Ezeknek a tulajdonságoknak az értékei: a kapcsolattartási pont és a felhasználónév, amelyeket a könyvtárral való fiók-csatlakozáshoz használ az útmutató következő részeiben.

  3. A fiók az cosmosdb keys list lekéréséhez használható.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Jegyezze fel a primaryMasterKey tulajdonság értékét az előző parancsok kimenetéből. Ennek a tulajdonságnak az értéke az jelszó, amit az útmutató későbbi részében használni fogsz a könyvtár segítségével a fiókhoz való csatlakozáshoz.

Fejlesztési környezet előkészítése

Ezután konfigurálja a fejlesztési környezetet egy új projekttel és az ügyfélkódtárral. Ez a lépés az utolsó szükséges előfeltétel, mielőtt továbblépne az útmutató többi részére.

  1. Kezdje egy üres mappában.

  2. Importálja a cassandra-driver csomagot a Python-csomagindexből (PyPI).

    pip install cassandra-driver
    
  3. Hozza létre a app.py fájlt.

Objektummodell

Leírás
Cluster Egy konkrét kapcsolatot jelöl egy klaszterhez

Példakódok

Ügyfél hitelesítése

Első lépésként hitelesíti az ügyfelet az útmutatóban korábban összegyűjtött hitelesítő adatokkal.

  1. Nyissa meg a app.py fájlt az integrált fejlesztési környezetben (IDE).

  2. Importálja a következő típusokat a cassandra-driver modulból:

    • cassandra.cluster.Cluster
    • cassandra.auth.PlainTextAuthProvider
    from cassandra.cluster import Cluster
    from cassandra.auth import PlainTextAuthProvider
    
  3. Importálja a következő típusokat a ssl modulból:

    • ssl.PROTOCOL_TLS_CLIENT
    • ssl.SSLContext
    • ssl.CERT_NONE
    from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONE
    
  4. Sztringváltozók létrehozása az útmutatóban korábban gyűjtött hitelesítő adatokhoz. Nevezze el a változókat username, passwordés contactPoint.

    username = "<username>"
    password = "<password>"
    contactPoint = "<contact-point>"
    
  5. Konfigurálja a SSLContext beállítást egy új, névvel ellátott ssl_contextváltozó létrehozásával, a protokoll PROTOCOL_TLS_CLIENTbeállításával, a gazdagépnév-ellenőrzés letiltásával és az ellenőrzési mód CERT_NONEbeállításával.

    ssl_context = SSLContext(PROTOCOL_TLS_CLIENT)
    ssl_context.check_hostname = False
    ssl_context.verify_mode = CERT_NONE
    
  6. Hozzon létre egy új PlainTextAuthProvider objektumot az előző lépésekben megadott hitelesítő adatokkal. Tárolja az eredményt egy névvel ellátott auth_providerváltozóban.

    auth_provider = PlainTextAuthProvider(username=username, password=password)
    
  7. Hozzon létre egy Cluster objektumot az előző lépésekben létrehozott hitelesítő és konfigurációs változók használatával. Tárolja az eredményt egy névvel ellátott clusterváltozóban.

    cluster = Cluster([contactPoint], port=10350, auth_provider=auth_provider, ssl_context=ssl_context)
    
  8. Csatlakozz a klaszterhez.

    session = cluster.connect("cosmicworks")
    

Figyelmeztetés

Ebben az útmutatóban le van tiltva a teljes átviteli rétegbiztonság (TLS) ellenőrzése a hitelesítés egyszerűsítése érdekében. Éles telepítéseknél teljesen engedélyezze az érvényesítést.

Adatok frissítése vagy beszúrása

Következő lépésként új adatokat kell beszúrni egy táblába. Az Upserting biztosítja az adatok megfelelő létrehozását vagy cseréjét attól függően, hogy ugyanazok az adatok már léteznek-e a táblában.

  1. Hozzon létre egy új sztringváltozót insertQuery a Cassandra Query Language (CQL) lekérdezéssel egy új sor beszúrásához.

    insertQuery = """
    INSERT INTO
        product (id, name, category, quantity, price, clearance)
    VALUES
        (%(id)s, %(name)s, %(category)s, %(quantity)s, %(price)s, %(clearance)s)
    """
    
  2. Hozzon létre egy új objektumot egy új termék különböző tulajdonságaival, és tárolja egy nevesített paramsváltozóban.

    params = {
        "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "name": "Yamba Surfboard",
        "category": "gear-surf-surfboards",
        "quantity": 12,
        "price": 850.00,
        "clearance": False
    }
    
  3. execute A függvény használatával futtassa a lekérdezést a megadott paraméterekkel.

    session.execute(insertQuery, params)
    

Adatok beolvasása

Ezután olvassa be azokat az adatokat, amelyeket korábban a táblázatba illesztett be.

  1. Hozzon létre egy új karakterlánc változót readQuery, amely CQL-lekérdezést tartalmaz, és megegyezik az azonos id mezővel rendelkező elemekkel.

    readQuery = "SELECT * FROM product WHERE id = %s LIMIT 1"
    
  2. Hozzon létre egy sztringváltozót id ugyanazzal az értékkel, mint a jelen útmutatóban korábban létrehozott termék.

    id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
    
  3. Használja a execute függvényt az readQuery-ben tárolt lekérdezés futtatásához, az id változót argumentumként megadva. Tárolja az eredményt egy névvel ellátott readResultsváltozóban.

    readResults = session.execute(readQuery, (id,))
    
  4. Használja a függvényt one a várt egyetlen eredmény lekéréséhez. Tárolja ezt az egyetlen eredményt egy névvel ellátott matchedProductváltozóban.

    matchedProduct = readResults.one()
    

Adatok lekérdezése

Végül egy lekérdezéssel megkeresheti a táblában egy adott szűrőnek megfelelő összes adatot.

  1. Hozzon létre sztringváltozókat findQuery a CQL-lekérdezéssel és category a szükséges paraméterrel.

    findQuery = "SELECT * FROM product WHERE category = %s ALLOW FILTERING"
    category = "gear-surf-surfboards"
    
  2. A két sztringváltozó és a execute függvény használatával több találatot is lekérdezhet. A lekérdezés eredményét egy névvel ellátott findResultsváltozóban tárolja.

    findResults = session.execute(findQuery, (category,))
    
  3. for A lekérdezés eredményeinek iterálásához használjon hurkot.

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

A kód futtatása

Futtassa az újonnan létrehozott alkalmazást egy terminál használatával az alkalmazáskönyvtárban.

python app.py

Erőforrások tisztítása

Ha már nincs szüksége a fiókra, távolítsa el a fiókot az Azure-előfizetésből az erőforrás törlésével .

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

Következő lépés