Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 loginparancs használatával.
- Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, jelentkezzen be az Azure CLI-be a
- 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.
Ha még nincs célerőforráscsoportja, a
az group createparanccsal hozzon létre egy új erőforráscsoportot az előfizetésben.az group create \ --name "<resource-group-name>" \ --location "<location>"az cosmosdb createA 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"Hozzon létre egy új kulcsteret
az cosmosdb cassandra keyspace createhasználatával, amitcosmicworksnevére elnevezett.az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"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 createparanccsal hozzon létre egy új táblát.productsschemaJson=$(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.
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}"Jegyezze le az
contactPointésusernametulajdonsá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.A fiók
az cosmosdb keys listlekéréséhez használható.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Jegyezze fel a
primaryMasterKeytulajdonsá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.
Kezdje egy üres mappában.
Importálja a
cassandra-drivercsomagot a Python-csomagindexből (PyPI).pip install cassandra-driverHozza 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.
Nyissa meg a app.py fájlt az integrált fejlesztési környezetben (IDE).
Importálja a következő típusokat a
cassandra-drivermodulból:cassandra.cluster.Clustercassandra.auth.PlainTextAuthProvider
from cassandra.cluster import Cluster from cassandra.auth import PlainTextAuthProviderImportálja a következő típusokat a
sslmodulból:ssl.PROTOCOL_TLS_CLIENTssl.SSLContextssl.CERT_NONE
from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONESztringváltozók létrehozása az útmutatóban korábban gyűjtött hitelesítő adatokhoz. Nevezze el a változókat
username,passwordéscontactPoint.username = "<username>" password = "<password>" contactPoint = "<contact-point>"Konfigurálja a
SSLContextbeállítást egy új, névvel ellátottssl_contextváltozó létrehozásával, a protokollPROTOCOL_TLS_CLIENTbeállításával, a gazdagépnév-ellenőrzés letiltásával és az ellenőrzési módCERT_NONEbeállításával.ssl_context = SSLContext(PROTOCOL_TLS_CLIENT) ssl_context.check_hostname = False ssl_context.verify_mode = CERT_NONEHozzon létre egy új
PlainTextAuthProviderobjektumot az előző lépésekben megadott hitelesítő adatokkal. Tárolja az eredményt egy névvel ellátottauth_providerváltozóban.auth_provider = PlainTextAuthProvider(username=username, password=password)Hozzon létre egy
Clusterobjektumot 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átottclusterváltozóban.cluster = Cluster([contactPoint], port=10350, auth_provider=auth_provider, ssl_context=ssl_context)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.
Hozzon létre egy új sztringváltozót
insertQuerya 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) """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 }executeA 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.
Hozzon létre egy új karakterlánc változót
readQuery, amely CQL-lekérdezést tartalmaz, és megegyezik az azonosidmezővel rendelkező elemekkel.readQuery = "SELECT * FROM product WHERE id = %s LIMIT 1"Hozzon létre egy sztringváltozót
idugyanazzal az értékkel, mint a jelen útmutatóban korábban létrehozott termék.id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"Használja a
executefüggvényt azreadQuery-ben tárolt lekérdezés futtatásához, azidváltozót argumentumként megadva. Tárolja az eredményt egy névvel ellátottreadResultsváltozóban.readResults = session.execute(readQuery, (id,))Használja a függvényt
onea várt egyetlen eredmény lekéréséhez. Tárolja ezt az egyetlen eredményt egy névvel ellátottmatchedProductvá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.
Hozzon létre sztringváltozókat
findQuerya CQL-lekérdezéssel éscategorya szükséges paraméterrel.findQuery = "SELECT * FROM product WHERE category = %s ALLOW FILTERING" category = "gear-surf-surfboards"A két sztringváltozó és a
executefüggvény használatával több találatot is lekérdezhet. A lekérdezés eredményét egy névvel ellátottfindResultsváltozóban tárolja.findResults = session.execute(findQuery, (category,))forA 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>"