Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом руководстве описывается создание консольного приложения Python для подключения к кластеру Azure DocumentDB. Вы настраиваете среду разработки, проходите проверку подлинности с помощью azure.identity пакета из пакета Azure SDK для Python и выполняете такие операции, как создание, запросы и обновление документов.
Предпосылки
подписка Azure
- Если у вас нет подписки Azure, создайте бесплатную учетную запись.
Существующий кластер Azure DocumentDB
- Если у вас нет кластера, создайте новый кластер
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете запускать справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, подумайте о запуске Azure CLI в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, войдите в Azure CLI с помощью команды az login . Чтобы завершить процесс аутентификации, следуйте шагам, отображаемым в вашем терминале. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Когда вас попросят, установите расширение Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
Настроена проверка подлинности Microsoft Entra для кластера с ролью, предоставленной вашему идентификатору
root.- Чтобы включить проверку подлинности Microsoft Entra, ознакомьтесь с руководством по настройке.
Последняя версия Python.
Настройка консольного приложения
Затем создайте проект консольного приложения и импортируйте необходимые библиотеки для проверки подлинности в кластере.
Создайте новый каталог для проекта и настройте виртуальную среду.
mkdir mongodb-app cd mongodb-app python -m venv .venvВключите виртуальную среду.
# On Windows .venv\Scripts\activate # On macOS/Linux source .venv/bin/activateСоздайте новый файл Python для приложения.
touch app.pyУстановите библиотеку
azure.identityдля проверки подлинности Azure.pip install azure.identitypymongoУстановите драйвер для Python.pip install pymongo
Подключение к кластеру
Теперь используйте библиотеку Azure.Identity, чтобы получить TokenCredential для подключения к вашему кластеру. Официальный драйвер MongoDB имеет специальный интерфейс, который должен быть реализован для получения маркеров из Microsoft Entra для использования при подключении к кластеру.
Импортируйте необходимые модули в верхней части файла Python.
from azure.identity import DefaultAzureCredential from pymongo import MongoClient from pymongo.auth_oidc import OIDCCallback, OIDCCallbackContext, OIDCCallbackResultСоздайте пользовательский класс, реализующий интерфейс обратного вызова 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)Задайте переменную имени кластера.
clusterName = "<azure-documentdb-cluster-name>"Создайте экземпляр DefaultAzureCredential и настройте свойства проверки подлинности.
credential = DefaultAzureCredential() authProperties = {"OIDC_CALLBACK": AzureIdentityTokenCallback(credential)}Создайте клиент MongoDB, настроенный с проверкой подлинности Microsoft Entra.
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")
Выполнение распространенных операций
Наконец, используйте официальную библиотеку для выполнения общих задач с базами данных, коллекциями и документами. Здесь вы используете те же классы и методы, которые будут использоваться для взаимодействия с MongoDB или DocumentDB для управления коллекциями и элементами.
Получите ссылку на вашу базу данных.
database = client.get_database("<database-name>") print("Database pointer created")Получите ссылку на коллекцию.
collection = database.get_collection("<container-name>") print("Collection pointer created")Создайте документ и обновите или вставьте его в коллекцию с помощью .
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)Используется
collection.find_oneдля извлечения определенного документа из коллекции.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']}")Запрос нескольких документов с
collection.find, которые соответствуют фильтру.filter = { "category": "gear-surf-surfboards" } matched_documents = collection.find(filter) for document in matched_documents: print(f"Found document:\t{document}")