Быстрый старт: Использование Azure Cosmos DB для таблиц с пакетом SDK Azure для Python

Important

Вы ищете решение для баз данных для крупномасштабных сценариев с соглашением об уровне обслуживания (SLA) с доступностью 99,999%, мгновенным автомасштабированием и автоматическим переключением на резервные ресурсы в нескольких регионах? Рассмотрим Azure Cosmos DB для NoSQL.

В этом кратком руководстве описано, как развернуть базовое приложение Azure Cosmos DB для таблиц с помощью пакета SDK Azure для Python. Azure Cosmos DB для таблицы — это хранилище данных без схемы, позволяющее приложениям хранить структурированные данные таблицы в облаке. Вы узнаете, как создавать таблицы, строки и выполнять основные задачи в ресурсе Azure Cosmos DB с помощью пакета SDK Azure для Python.

Справочная документация по API | Исходный код библиотеки | Пакет (PyPI) | Azure Developer CLI

Предпосылки

  • Azure Developer CLI (Интерфейс командной строки для разработчиков Azure)
  • Docker Desktop
  • Python 3.12

Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.

Инициализация проекта

Используйте интерфейс командной строки разработчика Azure (azd) для создания учетной записи Azure Cosmos DB для таблицы и развертывания контейнерного примера приложения. Пример приложения использует клиентскую библиотеку для управления, создания, чтения и выполнения запросов к образцам данных.

  1. Откройте терминал в пустом каталоге.

  2. Если вы еще не прошли проверку подлинности, выполните проверку подлинности в интерфейсе командной строки разработчика Azure с помощью azd auth login. Следуйте инструкциям, указанным инструментом, чтобы выполнить аутентификацию в CLI, используя ваши предпочитаемые учетные данные Azure.

    azd auth login
    
  3. Используйте azd init для инициализации проекта.

    azd init --template cosmos-db-table-python-quickstart
    
  4. Во время инициализации настройте уникальное имя среды.

  5. Разверните учетную запись Azure Cosmos DB с помощью azd up. Шаблоны Bicep также развертывают образец веб-приложения.

    azd up
    
  6. В процессе подготовки выберите вашу подписку, желаемое местоположение и целевую группу ресурсов. Дождитесь завершения процесса настройки. Процесс может занять около пяти минут.

  7. После завершения подготовки ресурсов 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.
    
  8. Используйте URL-адрес консоли для перехода к веб-приложению в браузере. Просмотрите выходные данные запущенного приложения.

Снимок экрана: работающее веб-приложение.

Установка клиентской библиотеки

Клиентская библиотека доступна через PyPi в качестве azure-data-tables пакета.

  1. Откройте терминал и перейдите в папку /src .

    cd ./src
    
  2. Если azure-data-tables еще не установлен, установите пакет с помощью pip install.

    pip install azure-data-tables
    
  3. Откройте и просмотрите файл src/requirements.txt , чтобы убедиться, что запись azure-data-tables существует.

Импорт библиотек

Импортируйте типы DefaultAzureCredential и TableServiceClient в код вашего приложения.

from azure.data.tables import TableServiceClient
from azure.identity import DefaultAzureCredential

Объектная модель

Name Description
TableServiceClient Этот тип является основным типом клиента и используется для управления метаданными или базами данных на уровне учетной записи.
TableClient Этот тип представляет клиента для таблицы в рамках учетной записи.

Примеры кода

Пример кода в шаблоне использует таблицу с именем cosmicworks-products. В cosmicworks-products таблице содержатся такие сведения, как имя, категория, количество, цена, уникальный идентификатор и флаг продажи для каждого продукта. Контейнер использует уникальный идентификатор в качестве ключа строки и категории в качестве ключа секции.

аутентификация клиента;

В этом примере создается новый экземпляр TableServiceClient типа.

credential = DefaultAzureCredential()

client = TableServiceClient(endpoint="<azure-cosmos-db-table-account-endpoint>", credential=credential)

Забронировать стол

В этом примере экземпляр типа TableClient создается с помощью функции GetTableClient типа TableServiceClient.

table = client.get_table_client("<azure-cosmos-db-table-name>")

Создайте сущность

Самый простой способ создания сущности в таблице — создать новый объект, гарантирующий, что необходимо указать обязательные RowKey и PartitionKey свойства.

new_entity = {
    "RowKey": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "PartitionKey": "gear-surf-surfboards",
    "Name": "Yamba Surfboard",
    "Quantity": 12,
    "Sale": False,
}

Создание сущности в таблице с помощью upsert_entity.

created_entity = table.upsert_entity(new_entity)

Получите сущность

Вы можете получить определенную сущность из таблицы с помощью get_entity.

existing_entity = table.get_entity(
    row_key="aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    partition_key="gear-surf-surfboards",
)

Запрос сущностей

После вставки сущности можно также запустить запрос, чтобы получить все сущности, соответствующие определенному фильтру, с помощью query_entities строкового фильтра OData.

category = "gear-surf-surfboards"
# Ensure the value is OData-compliant by escaping single quotes
safe_category = category.replace("'", "''")
filter = f"PartitionKey eq '{safe_category}'"
entities = table.query_entities(query_filter=filter)

Проанализируйте результаты запроса с разбивкой на страницы с помощью цикла for.

for entity in entities:
    # Do something

Очистите ресурсы

Когда вы больше не нуждаетесь в демонстрационном приложении или ресурсах, удалите соответствующее развертывание и все ресурсы.

azd down