在 AWS Neptune Gremlin Python 中正确处理顶点删除

问题描述 投票:0回答:2

使用 gremlin_python 删除 AWS Neptune 中的顶点会引发错误,即使该顶点已实际已删除(稍后查询时找不到它)。

我的顶点删除查询是否错误?

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中的顶点删除和检查?

gremlin tinkerpop tinkerpop3 amazon-neptune
2个回答
4
投票

您需要将遍历视为一个流,当该流为空并且您尝试获取下一个流时,将会发生错误。如果您要将脚本发送到 Neptune,那么

g.V(id).hasNext()
的语法将为您提供布尔结果。如果您使用 gremlin-python 并用本机 Python 编写 Gremlin,那么您将需要执行以下操作:

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

或者也许:

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

请注意,使用(即将发布)gremlin-python 3.2.10/3.3.4,您可以直接在Python中执行

hasNext()
,并且可以忽略上面的选项。


0
投票

尝试用

drop().iterate()
代替
next()

© www.soinside.com 2019 - 2024. All rights reserved.