Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Najnowsza wersja interfejsu wiersza polecenia platformy Azure w usłudze Azure Cloud Shell.
- Jeśli wolisz uruchamiać polecenia referencyjne CLI lokalnie, zaloguj się do Azure CLI przy użyciu polecenia
az login.
- Jeśli wolisz uruchamiać polecenia referencyjne CLI lokalnie, zaloguj się do Azure CLI przy użyciu polecenia
- Ś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.
Jeśli nie masz jeszcze docelowej grupy zasobów, użyj
az group createpolecenia , aby utworzyć nową grupę zasobów w ramach subskrypcji.az group create \ --name "<resource-group-name>" \ --location "<location>"Użyj polecenia ,
az cosmosdb createaby 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"Utwórz nową przestrzeń kluczy za pomocą
az cosmosdb cassandra keyspace createo nazwiecosmicworks.az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"Utwórz nowy obiekt JSON reprezentujący schemat przy użyciu wielolinijkowego polecenia Bash. Następnie użyj
az cosmosdb cassandra table createpolecenia , aby utworzyć nową tabelę o nazwieproducts.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.
Użyj
az cosmosdb showpolecenia , 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}"Zapisz wartości właściwości
contactPointiusernamez 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ą.Użyj
az cosmosdb keys listpolecenia, aby pobrać klucze dla konta.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Zanotuj wartość właściwości
primaryMasterKeyz 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.
Rozpocznij w pustym katalogu.
Zaimportuj
cassandra-driverpakiet z indeksu pakietów języka Python (PyPI).pip install cassandra-driverUtwó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.
Otwórz plik app.py w zintegrowanym środowisku projektowym (IDE).
Zaimportuj następujące typy z modułu
cassandra-driver:cassandra.cluster.Clustercassandra.auth.PlainTextAuthProvider
from cassandra.cluster import Cluster from cassandra.auth import PlainTextAuthProviderZaimportuj następujące typy z modułu
ssl:ssl.PROTOCOL_TLS_CLIENTssl.SSLContextssl.CERT_NONE
from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONEUtwórz zmienne tekstowe dla poświadczeń zebranych wcześniej w tym przewodniku. Nazwij zmienne
username,passwordicontactPoint.username = "<username>" password = "<password>" contactPoint = "<contact-point>"Skonfiguruj
SSLContext, tworząc nową zmienną o nazwiessl_context, ustawiając protokół naPROTOCOL_TLS_CLIENT, wyłączając sprawdzanie nazwy hosta i ustawiając tryb weryfikacji naCERT_NONE.ssl_context = SSLContext(PROTOCOL_TLS_CLIENT) ssl_context.check_hostname = False ssl_context.verify_mode = CERT_NONEUtwórz nowy
PlainTextAuthProviderobiekt z poświadczeniami określonymi w poprzednich krokach. Zapisz wynik w zmiennej o nazwieauth_provider.auth_provider = PlainTextAuthProvider(username=username, password=password)ClusterUtwórz obiekt przy użyciu zmiennych poświadczeń i konfiguracji utworzonych w poprzednich krokach. Zapisz wynik w zmiennej o nazwiecluster.cluster = Cluster([contactPoint], port=10350, auth_provider=auth_provider, ssl_context=ssl_context)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.
Utwórz nową zmienną ciągu o nazwie
insertQueryz 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) """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 }executeUż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.
Utwórz nową zmienną ciągu o nazwie
readQueryz zapytaniem CQL, które pasuje do elementów z tym samymidpolem.readQuery = "SELECT * FROM product WHERE id = %s LIMIT 1"Utwórz zmienną ciągu o nazwie
ido tej samej wartości co produkt utworzony wcześniej w tym przewodniku.id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"Użyj funkcji
execute, aby uruchomić zapytanie przechowywane wreadQuery, przekazując zmiennąidjako argument. Zapisz wynik w zmiennej o nazwiereadResults.readResults = session.execute(readQuery, (id,))Użyj funkcji
onedo uzyskania oczekiwanego pojedynczego wyniku. Zapisz ten pojedynczy wynik w zmiennej o nazwiematchedProduct.matchedProduct = readResults.one()
Wykonywanie zapytań o dane
Na koniec użyj zapytania, aby znaleźć wszystkie dane zgodne z określonym filtrem w tabeli.
Utwórz zmienne ciągu o nazwie
findQueryicategoryza pomocą zapytania CQL i wymaganego parametru.findQuery = "SELECT * FROM product WHERE category = %s ALLOW FILTERING" category = "gear-surf-surfboards"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 nazwiefindResults.findResults = session.execute(findQuery, (category,))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>"