Краткое руководство. Использование Azure Cosmos DB для NoSQL с пакетом SDK Azure для Python
В этом кратком руководстве описано, как развернуть базовое приложение Azure Cosmos DB для таблиц с помощью пакета SDK Azure для Python. Azure Cosmos DB для таблицы — это хранилище данных без схемы, позволяющее приложениям хранить структурированные данные таблицы в облаке. Вы узнаете, как создавать таблицы, строки и выполнять основные задачи в ресурсе Azure Cosmos DB с помощью пакета SDK Azure для Python.
Справочная документация по | API— пакет исходного кода | (PyPI) | Azure Developer CLI
Необходимые компоненты
- Azure Developer CLI
- Docker Desktop
- Python 3.12
Если у вас нет учетной записи Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
Инициализация проекта
Используйте интерфейс командной строки разработчика Azure (azd
) для создания учетной записи Azure Cosmos DB для таблицы и развертывания контейнерного примера приложения. Пример приложения использует клиентская библиотека для управления, создания, чтения и запроса примеров данных.
Откройте терминал в пустом каталоге.
Если вы еще не прошли проверку подлинности, выполните проверку подлинности в интерфейсе командной строки разработчика Azure с помощью
azd auth login
. Выполните действия, указанные средством для проверки подлинности в CLI с помощью предпочитаемых учетных данных Azure.azd auth login
Используется
azd init
для инициализации проекта.azd init --template cosmos-db-nosql-python-quickstart
Во время инициализации настройте уникальное имя среды.
Разверните учетную запись Azure Cosmos DB с помощью
azd up
. Шаблоны Bicep также развертывают пример веб-приложения.azd up
В процессе подготовки выберите подписку, требуемое расположение и целевую группу ресурсов. Дождитесь завершения процесса подготовки. Процесс может занять около пяти минут.
После завершения подготовки ресурсов Azure в выходные данные будет включен URL-адрес работающего веб-приложения.
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io> SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
Используйте URL-адрес консоли для перехода к веб-приложению в браузере. Просмотрите выходные данные запущенного приложения.
Установка клиентской библиотеки
Клиентская библиотека доступна через индекс пакета Python в качестве библиотеки azure-cosmos
.
Откройте терминал и перейдите в папку
/src
.cd ./src
Если пакет еще не установлен, установите
azure-cosmos
его с помощьюpip install
.pip install azure-cosmos
Кроме того, установите
azure-identity
пакет, если он еще не установлен.pip install azure-identity
Откройте и просмотрите файл src/requirements.txt , чтобы проверить наличие
azure-cosmos
иazure-identity
записи.
Объектная модель
Имя | Описание |
---|---|
CosmosClient |
Этот класс является основным клиентским классом и используется для управления метаданными или базами данных на уровне учетной записи. |
DatabaseProxy |
Этот класс представляет базу данных в учетной записи. |
ContainerProxy |
Этот класс в основном используется для выполнения операций чтения, обновления и удаления в контейнере или элементов, хранящихся в контейнере. |
PartitionKey |
Этот класс представляет ключ логического раздела. Этот класс необходим для многих распространенных операций и запросов. |
Примеры кода
- аутентификация клиента;
- Получение базы данных
- Получение контейнера
- Создание элемента
- Получение элемента
- Запрос элементов
Пример кода в шаблоне использует базу данных с именем cosmicworks
и контейнером products
. Контейнер products
содержит такие сведения, как имя, категория, количество, уникальный идентификатор и флаг продажи для каждого продукта. Контейнер использует /category
свойство в качестве ключа логического раздела.
аутентификация клиента;
В этом примере создается новый экземпляр CosmosClient
типа и выполняется проверка подлинности с помощью экземпляра DefaultAzureCredential
.
credential = DefaultAzureCredential()
client = CosmosClient(url="<azure-cosmos-db-nosql-account-endpoint>", credential=credential)
Получение базы данных
Используется client.get_database_client
для извлечения существующей базы данных с именем cosmicworks
.
database = client.get_database_client("cosmicworks")
Получение контейнера
Получение существующего products
контейнера с помощью database.get_container_client
.
container = database.get_container_client("products")
Создание элемента
Создайте новый объект со всеми элементами, которые необходимо сериализовать в JSON. В этом примере тип имеет уникальный идентификатор и поля для категории, имени, количества, цены и продажи. Создайте элемент в контейнере с помощью container.upsert_item
. Этот метод "upserts" элемент фактически заменяет элемент, если он уже существует.
new_item = {
"id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"category": "gear-surf-surfboards",
"name": "Yamba Surfboard",
"quantity": 12,
"sale": False,
}
created_item = container.upsert_item(new_item)
Чтение элемента
Выполните операцию чтения точек с помощью полей уникального идентификатора (id
) и ключа секции. Используется container.read_item
для эффективного извлечения определенного элемента.
existing_item = container.read_item(
item="aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
partition_key="gear-surf-surfboards",
)
Элементы запроса
Выполнение запроса по нескольким элементам в контейнере с помощью container.GetItemQueryIterator
. Найдите все элементы в указанной категории с помощью этого параметризованного запроса:
SELECT * FROM products p WHERE p.category = @category
queryText = "SELECT * FROM products p WHERE p.category = @category"
results = container.query_items(
query=queryText,
parameters=[
dict(
name="@category",
value="gear-surf-surfboards",
)
],
enable_cross_partition_query=False,
)
Прокрутите результаты запроса.
items = [item for item in results]
output = json.dumps(items, indent=True)
Очистка ресурсов
Если вам больше не нужен пример приложения или ресурсов, удалите соответствующее развертывание и все ресурсы.
azd down