Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Начало работы с клиентской библиотекой Apache Gremlin для Azure Cosmos DB для Python для хранения, управления и запроса неструктурированных данных. Выполните действия, описанные в этом руководстве, чтобы создать новую учетную запись, установить клиентская библиотека Python, подключиться к учетной записи, выполнить общие операции и запросить окончательные образцы данных.
Исходный код библиотеки | Пакет (PyPi)
Необходимые компоненты
подписка Azure
- Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.
Последняя версия Azure CLI в Azure Cloud Shell.
- Если вы предпочитаете локально запускать справочные команды CLI, войдите в Azure CLI с помощью
az login
команды.
- Если вы предпочитаете локально запускать справочные команды CLI, войдите в Azure CLI с помощью
- Python 3.12 или более поздней версии
Установка
Сначала настройте учетную запись и среду разработки для этого руководства. В этом разделе описан процесс создания учетной записи, получения учетных данных и подготовки среды разработки.
Создать аккаунт
Сначала создайте API для учетной записи Apache Gremlin. После создания учетной записи создайте ресурсы базы данных и графа.
Если у вас еще нет целевой группы ресурсов, используйте
az group create
команду для создания новой группы ресурсов в подписке.az group create \ --name "<resource-group-name>" \ --location "<location>"
az cosmosdb create
Используйте команду, чтобы создать новую учетную запись Azure Cosmos DB для Apache Gremlin с параметрами по умолчанию.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableGremlin"
Создайте новую базу данных с именем
az cosmosdb gremlin database create
cosmicworks
.az cosmosdb gremlin database create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"
az cosmosdb gremlin graph create
Используйте команду для создания нового графа с именемproducts
.az cosmosdb gremlin graph create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category"
Получение учетных данных
Теперь получите пароль для клиентской библиотеки для создания подключения к недавно созданной учетной записи.
Используйте
az cosmosdb show
для получения хоста для учетной записи.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{host:name}"
Запишите значение
host
свойства из выходных данных предыдущих команд. Значение этого свойства — это хост, который вы используете далее в этом руководстве для подключения к учетной записи и библиотеке.Используйте
az cosmosdb keys list
для получения ключей для учетной записи.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"
Запишите значение
primaryMasterKey
свойства из выходных данных предыдущих команд. Это значение свойства — это ключ , который вы используете далее в этом руководстве для подключения к учетной записи с библиотекой.
Подготовка среды разработки
Затем настройте среду разработки с новым проектом и клиентской библиотекой. Этот шаг является последним обязательным предварительным условием, прежде чем перейти к остальной части этого руководства.
Запустите пустую папку.
gremlinpython
Импортируйте пакет из индекса пакетов Python (PyPI).pip install gremlinpython
Создайте файл app.py.
Объектная модель
Описание | |
---|---|
GremlinClient |
Представляет клиент, используемый для подключения и взаимодействия с сервером Gremlin |
GraphTraversalSource |
Используется для создания и выполнения обходов Gremlin |
Примеры кода
Проверка подлинности клиента
Начните с проверки подлинности клиента с помощью учетных данных, собранных ранее в этом руководстве.
Откройте файл app.py в интегрированной среде разработки (IDE).
Импортируйте следующие типы из библиотеки
gremlin_python.driver
:gremlin_python.driver.client
gremlin_python.driver.serializer
from gremlin_python.driver import client, serializer
Создайте строковые переменные для учетных данных, собранных ранее в этом руководстве. Назовите переменные
hostname
иprimary_key
.hostname = "<host>" primary_key = "<key>"
Client
Создайте объект с помощью учетных данных и переменных конфигурации, созданных на предыдущих шагах. Присвойте переменнойclient
имя.client = client.Client( url=f"wss://{hostname}.gremlin.cosmos.azure.com:443/", traversal_source="g", username="/dbs/cosmicworks/colls/products", password=f"{primary_key}", message_serializer=serializer.GraphSONSerializersV2d0() )
Вставка данных
Затем вставьте новые вершины и пограничные данные в граф. Перед созданием новых данных снимите график всех существующих данных.
g.V().drop()
Выполните запрос, чтобы очистить все вершины и края из графа.client.submit("g.V().drop()").all().result()
Создайте запрос Gremlin, который добавляет вершину.
insert_vertex_query = ( "g.addV('product')" ".property('id', prop_id)" ".property('name', prop_name)" ".property('category', prop_category)" ".property('quantity', prop_quantity)" ".property('price', prop_price)" ".property('clearance', prop_clearance)" )
Добавьте вершину для одного продукта.
client.submit( message=insert_vertex_query, bindings={ "prop_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "prop_name": "Yamba Surfboard", "prop_category": "gear-surf-surfboards", "prop_quantity": 12, "prop_price": 850.00, "prop_clearance": False, }, ).all().result()
Добавьте еще две вершины для дополнительных двух продуктов.
client.submit( message=insert_vertex_query, bindings={ "prop_id": "bbbbbbbb-1111-2222-3333-cccccccccccc", "prop_name": "Montau Turtle Surfboard", "prop_category": "gear-surf-surfboards", "prop_quantity": 5, "prop_price": 600.00, "prop_clearance": True, }, ).all().result() client.submit( message=insert_vertex_query, bindings={ "prop_id": "cccccccc-2222-3333-4444-dddddddddddd", "prop_name": "Noosa Surfboard", "prop_category": "gear-surf-surfboards", "prop_quantity": 31, "prop_price": 1100.00, "prop_clearance": False, }, ).all().result()
Создайте ещё один запрос Gremlin, который добавляет ребро.
insert_edge_query = ( "g.V([prop_partition_key, prop_source_id])" ".addE('replaces')" ".to(g.V([prop_partition_key, prop_target_id]))" )
Добавьте два края.
client.submit( message=insert_edge_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_source_id": "bbbbbbbb-1111-2222-3333-cccccccccccc", "prop_target_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", }, ).all().result() client.submit( message=insert_edge_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_source_id": "bbbbbbbb-1111-2222-3333-cccccccccccc", "prop_target_id": "cccccccc-2222-3333-4444-dddddddddddd", }, ).all().result()
Чтение данных
Затем считывайте данные, которые ранее были вставлены в граф.
Создайте запрос, который считывает вершину с помощью уникального идентификатора и значения ключа раздела.
read_vertex_query = "g.V([prop_partition_key, prop_id])"
Затем считывайте вершину, указав необходимые параметры.
matched_item = client.submit( message=read_vertex_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" } ).one()
Запрос данных
Наконец, используйте запрос, чтобы найти все данные, соответствующие определенному обходу или фильтру в графе.
Создайте запрос, который находит все вершины, исходящие из определенной вершины.
find_vertices_query = ( "g.V().hasLabel('product')" ".has('category', prop_partition_key)" ".has('name', prop_name)" ".outE('replaces').inV()" )
Выполните запрос, указывающий
Montau Turtle Surfboard
продукт.find_results = client.submit( message=find_vertices_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_name": "Montau Turtle Surfboard", }, ).all().result()
Итерируйте результаты запроса.
for result in find_results: # Do something here with each result
Выполнение кода
Запустите созданное приложение с помощью терминала в каталоге приложения.
python app.py
Очистка ресурсов
Если учетная запись больше не нужна, удалите учетную запись из подписки Azure, удалив ресурс.
az cosmosdb delete \
--resource-group "<resource-group-name>" \
--name "<account-name>"