Начало работы с Azure Cosmos DB для NoSQL с помощью Python
ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL
В этой статье показано, как подключиться к Azure Cosmos DB для NoSQL с помощью пакета SDK для Python. После подключения можно выполнять операции с базами данных, контейнерами и элементами.
Исходный код исходного кода | библиотеки пакетов (PyPi) | Samples API | |
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Учетная запись Azure Cosmos DB для NoSQL. Создайте учетную запись API для NoSQL.
- Python версии 3.7 или выше
- Интерфейс командной строки (CLI) Azure или Azure PowerShell
Настройка проекта
Создайте среду, в которой можно запустить код Python.
В виртуальной среде можно установить пакеты Python в изолированной среде, не влияя на остальную часть системы.
Установите пакет SDK Для Python для Azure Cosmos DB для NoSQL в виртуальной среде.
pip install azure-cosmos
Создание приложения Python
В среде создайте файл app.py и добавьте в него следующий код:
import json
import os
import sys
import uuid
from azure.core.exceptions import AzureError
from azure.cosmos import CosmosClient, PartitionKey
Предыдущий код импортирует модули, которые будут использоваться в остальной части статьи.
Подключение к Azure Cosmos DB для NoSQL
Чтобы подключиться к API для NoSQL Azure Cosmos DB, создайте экземпляр CosmosClient
класса. Этот класс является начальной точкой для выполнения всех операций с базами данных.
Чтобы подключиться к учетной записи API для NoSQL с помощью Microsoft Entra, используйте субъект безопасности. Точный тип субъекта будет зависеть от того, где размещается код приложения. Приведенная ниже таблица служит кратким справочным руководством.
Место выполнения приложения | Субъект безопасности |
---|---|
Локальный компьютер (разработка и тестирование) | Удостоверение пользователя или субъект-служба |
Azure | Управляемое удостоверение |
Серверы или клиенты вне Azure | Субъект-служба |
Импорт Azure.Identity
Пакет azure-identity содержит основные функции проверки подлинности , общие для всех библиотек пакета SDK Azure.
Импортируйте пакет azure-identity в среду.
pip install azure-identity
Создание CosmosClient с реализацией учетных данных по умолчанию
Если вы тестируете на локальном компьютере или приложение будет выполняться в службах Azure с прямой поддержкой управляемых удостоверений, получите маркер OAuth, создав экземпляр DefaultAzureCredential
.
В app.py:
Получите конечную точку для подключения к учетной записи и задайте ее в качестве переменной
COSMOS_ENDPOINT
среды.Импортируйте DefaultAzureCredential и создайте его экземпляр.
Создайте новый экземпляр класса CosmosClient с конечной точкой и учетными данными в качестве параметров.
from azure.identity import DefaultAzureCredential
ENDPOINT = os.environ["COSMOS_ENDPOINT"]
credential = DefaultAzureCredential()
client = CosmosClient(ENDPOINT, credential)
Внимание
Дополнительные сведения о том, как добавить правильную роль для DefaultAzureCredential
работы, см. в статье Настройка управления доступом на основе ролей с помощью идентификатора Microsoft Entra для учетной записи Azure Cosmos DB. В частности, ознакомьтесь с разделом о создании ролей и назначении их идентификатору субъекта.
Сборка приложения
При создании приложения код будет в основном взаимодействовать с четырьмя типами ресурсов:
Учетная запись API для NoSQL, которая является уникальным пространством имен верхнего уровня для данных Azure Cosmos DB.
Базы данных, которые упорядочивают контейнеры в учетной записи.
Контейнеры, содержащие набор отдельных элементов в базе данных.
Элементы, представляющие документ JSON в контейнере.
На следующей схеме показана связь между этими ресурсами.
Иерархическая схема с учетной записью Azure Cosmos DB в верхней части. У учетной записи есть два дочерних узла базы данных. Один из узлов базы данных содержит два дочерних узла контейнера. Другой узел базы данных содержит один дочерний узел контейнера. У этого одного узла контейнера есть три дочерних узла.
Каждый тип ресурса представлен одним или несколькими связанными классами Python. Ниже приведен список наиболее распространенных классов для синхронного программирования. (Существуют аналогичные классы для асинхронного программирования в пространстве имен azure.cosmos.aio .)
Класс | Description |
---|---|
CosmosClient |
Этот класс является логическим представлением службы Azure Cosmos DB на стороне клиента. Этот клиентский объект позволяет настраивать и выполнять запросы к службе. |
DatabaseProxy |
Интерфейс к базе данных, которая может или не может существовать в службе. Этот класс не должен быть создан напрямую. Вместо этого следует использовать метод CosmosClient get_database_client . |
ContainerProxy |
Интерфейс для взаимодействия с определенным контейнером Cosmos DB. Этот класс не должен быть создан напрямую. Вместо этого используйте метод DatabaseProxy get_container_client для получения существующего контейнера или метода create_container для создания нового контейнера. |
Сведения об использовании каждого из этих классов для создания приложения приведены в следующих руководствах.
Руководство | Description |
---|---|
Создание базы данных | Создание баз данных |
Создание контейнера | Создание контейнеров |
Примеры элементов | Точечное чтение определенного элемента |