如何在Gremlin Python中为两个已有顶点添加边?
Gremlin Python中为已存在顶点添加边的正确方式
问题原因
你遇到的空列表问题,本质是Gremlin Python客户端返回的顶点对象是本地序列化实例,并非服务器端的顶点引用。直接将本地顶点对象传入g.V()时,服务器无法识别该对象,导致遍历找不到目标顶点,自然无法创建边。
正确实现方式
方式1:通过顶点ID关联
创建顶点后提取其ID,用ID作为服务器端可识别的标识来定位顶点:
v_marko = g.add_v('person').property('name', 'Marko').next() v_peter = g.add_v('person').property('name', 'Peter').next() # 获取顶点的服务器端ID marko_id = v_marko.id peter_id = v_peter.id # 通过ID定位顶点并添加边 edge = g.V(marko_id).addE('knows').to(g.V(peter_id)).toList() print(edge)
方式2:同遍历链内完成创建与关联
如果是刚创建顶点就需要关联边,推荐在同一条Gremlin遍历链中用as()标签实现,避免跨请求的本地对象问题:
edge = g.add_v('person').property('name', 'Peter').as_('p2')\ .add_v('person').property('name', 'Marko')\ .addE('knows').to('p2').toList() print(edge)
方式3:通过顶点属性定位
若顶点已存在,可通过唯一属性(如name)查询定位顶点,再添加边:
# 确保顶点已存在(若已创建可跳过此步) g.add_v('person').property('name', 'Marko').toList() g.add_v('person').property('name', 'Peter').toList() # 通过属性匹配顶点并创建边 edge = g.V().has('person', 'name', 'Marko')\ .addE('knows')\ .to(g.V().has('person', 'name', 'Peter')).toList() print(edge)
内容的提问来源于stack exchange,提问作者Tojo Cherian
相关产品推荐
相关产品推荐

