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.
Ten przewodnik przeprowadzi Cię przez proces tworzenia aplikacji konsolowej języka Python w celu nawiązania połączenia z klastrem usługi Azure DocumentDB. Środowisko projektowe można skonfigurować, uwierzytelniać przy użyciu azure.identity pakietu z zestawu Azure SDK dla języka Python i wykonywać operacje, takie jak tworzenie, wykonywanie zapytań i aktualizowanie dokumentów.
Wymagania wstępne
Subskrypcja platformy Azure
- Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto
Istniejący klaster usługi Azure DocumentDB
- Jeśli nie masz klastra, utwórz nowy klaster
Użyj środowiska Bash w Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Get started with Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj Azure CLI. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie Azure CLI w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić Azure CLI w kontenerze Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do Azure CLI za pomocą polecenia az login. Aby zakończyć proces uwierzytelniania, wykonaj kroki wyświetlane na Twoim terminalu. Aby uzyskać inne opcje logowania, zobacz Uwierzytelnianie na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
Gdy zostaniesz o to poproszony/a, zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Używanie rozszerzeń i zarządzanie nimi za pomocą interfejsu wiersza polecenia platformy Azure.
Uruchom az version, aby sprawdzić zainstalowaną wersję i biblioteki zależne. Aby zaktualizować do najnowszej wersji, uruchom az upgrade.
Uwierzytelnianie Microsoft Entra zostało skonfigurowane dla klastra z przypisaną rolą dla Twojej tożsamości
root.- Aby włączyć uwierzytelnianie firmy Microsoft Entra, zapoznaj się z przewodnikiem konfiguracji.
Najnowsza wersja języka Python.
Konfigurowanie aplikacji konsolowej
Następnie utwórz nowy projekt aplikacji konsolowej i zaimportuj niezbędne biblioteki do uwierzytelniania w klastrze.
Utwórz nowy katalog dla projektu i skonfiguruj środowisko wirtualne.
mkdir mongodb-app cd mongodb-app python -m venv .venvAktywuj środowisko wirtualne.
# On Windows .venv\Scripts\activate # On macOS/Linux source .venv/bin/activateUtwórz nowy plik w języku Python dla aplikacji.
touch app.pyZainstaluj bibliotekę
azure.identityna potrzeby uwierzytelniania platformy Azure.pip install azure.identitypymongoZainstaluj sterownik dla języka Python.pip install pymongo
Połącz się z klastrem
Teraz użyj biblioteki Azure.Identity, aby uzyskać TokenCredential, którego możesz użyć do połączenia się z klastrem. Oficjalny sterownik bazy danych MongoDB ma specjalny interfejs, który należy zaimplementować w celu uzyskania tokenów z firmy Microsoft Entra do użycia podczas nawiązywania połączenia z klastrem.
Zaimportuj niezbędne moduły w górnej części pliku języka Python.
from azure.identity import DefaultAzureCredential from pymongo import MongoClient from pymongo.auth_oidc import OIDCCallback, OIDCCallbackContext, OIDCCallbackResultUtwórz klasę niestandardową, która implementuje interfejs wywołania zwrotnego MongoDB OpenID Connect (OIDC).
class AzureIdentityTokenCallback(OIDCCallback): def __init__(self, credential): self.credential = credential def fetch(self, context: OIDCCallbackContext) -> OIDCCallbackResult: token = self.credential.get_token( "https://ossrdbms-aad.database.windows.net/.default").token return OIDCCallbackResult(access_token=token)Ustaw zmienną nazwy klastra.
clusterName = "<azure-documentdb-cluster-name>"Utwórz instancję DefaultAzureCredential i skonfiguruj właściwości uwierzytelniania.
credential = DefaultAzureCredential() authProperties = {"OIDC_CALLBACK": AzureIdentityTokenCallback(credential)}Utwórz klienta bazy danych MongoDB skonfigurowanego przy użyciu uwierzytelniania entra firmy Microsoft.
client = MongoClient( f"mongodb+srv://{clusterName}.global.mongocluster.cosmos.azure.com/", connectTimeoutMS=120000, tls=True, retryWrites=True, authMechanism="MONGODB-OIDC", authMechanismProperties=authProperties ) print("Client created")
Wykonywanie typowych operacji
Na koniec użyj oficjalnej biblioteki do wykonywania typowych zadań z bazami danych, kolekcjami i dokumentami. W tym miejscu użyjesz tych samych klas i metod, których należy użyć do interakcji z bazą danych MongoDB lub DocumentDB w celu zarządzania kolekcjami i elementami.
Uzyskaj referencję do bazy danych.
database = client.get_database("<database-name>") print("Database pointer created")Uzyskaj referencję do swojej kolekcji.
collection = database.get_collection("<container-name>") print("Collection pointer created")Utwórz dokument i wstaw go do kolekcji za pomocą polecenia
collection.update_one.new_document = { "_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "category": "gear-surf-surfboards", "name": "Yamba Surfboard", "quantity": 12, "price": 850.00, "clearance": False, } filter = { "_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", } payload = { "$set": new_document } result = collection.update_one(filter, payload, upsert=True)Użyj
collection.find_oneaby pobrać określony dokument z kolekcji.filter = { "_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "category": "gear-surf-surfboards" } existing_document = collection.find_one(filter) print(f"Read document _id:\t{existing_document['_id']}")Wykonaj zapytanie o wiele dokumentów,
collection.findktóre pasują do filtru.filter = { "category": "gear-surf-surfboards" } matched_documents = collection.find(filter) for document in matched_documents: print(f"Found document:\t{document}")