Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве вы развернете базовое приложение Azure Cosmos DB для NoSQL, используя Azure SDK для Python. Azure Cosmos DB для NoSQL — это хранилище данных без схемы, позволяющее приложениям хранить неструктурированные данные в облаке. Запросите данные в ваших контейнерах и выполняйте общие операции с отдельными элементами с помощью Azure SDK для Python.
Справочная документация по | APIИсходный код | библиотекиПакет (PyPI) | Интерфейс командной строки разработчика Azure
Prerequisites
- Azure Developer CLI (Интерфейс командной строки для разработчиков Azure)
- Docker Desktop
- Python 3.12
Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
Инициализируйте проект
Используйте интерфейс командной строки разработчика Azure (azd) для создания учетной записи Azure Cosmos DB для NoSQL и развертывания контейнерного примера приложения. Пример приложения использует клиентскую библиотеку для управления, создания, чтения и запроса данных.
Откройте терминал в пустом каталоге.
Если вы еще не прошли аутентификацию, выполните аутентификацию в Azure Developer CLI с помощью
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 Package Index, как библиотека 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оба присутствуют.
Импорт библиотек
Импортируйте типы DefaultAzureCredential и CosmosClient в код приложения.
from azure.identity import DefaultAzureCredential
from azure.cosmos import CosmosClient
Объектная модель
| Name | Описание |
|---|---|
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. Этот метод "вставляет или обновляет" элемент, эффективно заменяя его, если он уже существует.
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)
Изучите свои данные
Используйте расширение Visual Studio Code для Azure Cosmos DB, чтобы изучить ваши данные NoSQL. Вы можете выполнять основные операции с базой данных, включая, но не ограничиваясь:
- Выполнение запросов с использованием скрапбука или редактора запросов
- Изменение, обновление, создание и удаление элементов
- Импорт объемных данных из других источников
- Управление базами данных и контейнерами
** Для получения дополнительной информации см. Как использовать расширение Visual Studio Code для изучения Azure Cosmos DB для данных NoSQL.
Упорядочить ресурсы
Когда вы больше не нуждаетесь в демонстрационном приложении или ресурсах, удалите соответствующее развертывание и все ресурсы.
azd down