You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gremlin-python中如何在已存在的顶点之间添加边?

gremlin-python两个已有顶点间添加边的标准实现

现有代码错误原因

  • 代码片段1错误:addE()是Gremlin遍历器的专属方法,你通过next()拿到的是本地Vertex实体对象,该对象没有addE属性,因此触发AttributeError。
  • 代码片段2错误:Gremlin遍历是流式上下文传递逻辑,连续调用V()方法会重置遍历上下文,你给v2打完as_('t')标记后又调用了V(v1),之前的标记上下文已经被清空,to("t")找不到对应标记就会抛出KeyError。

标准正确写法

写法1:已提前查询到顶点实例的场景

如果已经把两个顶点查询到本地了,直接把顶点对象传入遍历方法即可:

# 查询获取两个顶点的本地实例
v1 = g.V().has("Customers", "OrderedId", 1).next()
v2 = g.V().has("Hotels", "Id", 1).next()
# 从遍历器启动加边逻辑,to()中直接传入顶点实例
new_edge = g.V(v1).addE("HasVisited").to(v2).next()

写法2:无需拉取顶点到本地的性能优化写法

全程在图数据库服务端执行,不需要把顶点数据拉到本地,减少网络往返开销:

new_edge = g.V().has("Customers", "OrderedId", 1).as_("v1") \
      .V().has("Hotels", "Id", 1) \
      .addE("HasVisited").from_("v1") \
      .next()

补充说明

  • 单条边添加操作只会返回一个边结果,用next()即可拿到边实例,不需要调用toList()。
  • 如果需要给边添加自定义属性,链式调用property()方法即可,示例如下:
new_edge = g.V(v1).addE("HasVisited").to(v2) \
        .property("visit_date", "2024-06-15") \
        .property("stay_days", 2) \
        .next()

内容的提问来源于stack exchange,提问作者Sagar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 22:45:02