Питон, лампочки, рескстер. Получение скаляра bool возвращено скриптом гремлина из лампочки

Я пишу скрипты Python для извлечения данных из нескольких источников и помещать их в график в определенной структуре.

Я использую модели лампочек для всех данных. У меня есть модели для всех соответствующих типов узлов и отношений. Мои краевые модели не имеют дополнительных свойств, кроме "label".

В процессе разработки я запускаю один и тот же скрипт несколько раз. я использую get_or_create чтобы предотвратить повторяющиеся узлы, но ребра не имеют этот метод. У меня нет объекта для существующего ребра, так как он был создан при предыдущем запуске сценария.

Я видел несколько вопросов, говорящих о похожих вещах с ответами от espeed, как это, но я не мог найти удовлетворительный ответ для моей конкретной проблемы.

Какой будет самый простой код для этого метода?

В настоящее время я пытаюсь сделать это путем загрузки скрипта gremlin; как предложено Стивеном; со следующей функцией:

def is_connected(parent, child, edge_label) {
    return g.v(parent).out(edge_label).retain([g.v(child)]).hasNext()
}

И следующий код Python.

g.scripts.update('gremlin_scripts/gremlin.groovy')
script = g.scripts.get('gremlin:is_connected')
params = dict(parent=parent_node.eid, child=menu_item_v.eid, edge_label='has_sub_menu_item')
response = g.gremlin.execute(script, params)

Я не могу понять, как получить результат bool в python. Я также попробовал g.gremlin.query (script, param)

1 ответ

Вот один из способов сделать это:

parent_v.out(rel_label).retain(child_v).hasNext()

Итак, от родителя, траверс out всем детям (я предполагаю, что "вне" - это направление ваших отношений - как вы решите реализовать это, специфичное для вашего домена) и определить, присутствует ли этот ребенок в какой-либо момент, с помощью retain,

Другие вопросы по тегам