Правильная обработка удаления вершин в AWS Neptune Gremlin Python

Удаление вершины в AWS Neptune с помощью gremlin_python вызывает ошибку, даже если вершина фактически удалена (не может найти ее, когда я запрашиваю ее позже).

Мой запрос на удаление вершины неверен?

delete_vertex_q = "g.V(%s).drop().next()"%(v_id)
delete_vertex_r = eval(delete_vertex_q)

после этого, когда я снова пытаюсь найти вершину:
print(g.V('<vertex_id>').next())
Я получаю StopIteration ошибку.

Как правильно обрабатывать удаление и проверку вершин в AWS Neptune Gremlin?


person cryanbhu    schedule 04.10.2018    source источник


Ответы (1)


Вам нужно думать об обходах как о потоке, и когда этот поток пуст, и вы пытаетесь получить следующий, произойдет ошибка. Если вы отправляете скрипты в Нептун, то g.V(id).hasNext() - это синтаксис, который даст вам логический результат. Если вы используете gremlin-python и пишете Gremlin на собственном Python, вам нужно будет сделать что-то вроде:

len(g.V(id).toList()) == 0

или возможно:

g.V(id).count().next() == 0

Обратите внимание, что с (скоро будет выпущен) gremlin-python 3.2.10 / 3.3.4 вы можете делать hasNext() непосредственно в Python, а параметры, указанные выше, можно игнорировать.

person stephen mallette    schedule 04.10.2018