【问题标题】:How do you add edges to existing vertices in Gremlin-python?如何在 Gremlin-python 中向现有顶点添加边?
【发布时间】:2021-06-23 17:23:55
【问题描述】:

在 gremlin-python 中两个已经存在的顶点之间添加边的标准方法是什么?我已经尝试了无数次迭代,包括下面的两个代码版本,但不幸的是它们都会导致错误。

代码 sn-p 1:

   v1= g.V().has("Customers", "OrderedId",1).next()
   v2 = g.V().has("Hotels", "Id", 1).next()
   e_id = v1.addE('HasVisited').to(v2).toList()

错误 1:

AttributeError: 'Vertex' object has no attribute 'addE'

代码片段 2

v1= g.V().has("Customers", "OrderedId",1).next()
v2 = g.V().has("Hotels", "Id", 1).next()
g.V(v2).as_('t').V(v1).addE("HasVisited").to("t").toList()

错误 2

KeyError: None

【问题讨论】:

    标签: python gremlin tinkerpop gremlinpython


    【解决方案1】:

    我可能会这样做:

    g.V().has("Customers", "OrderedId",1).as_('a').
      V().has("Hotels", "Id", 1).as_('b').
      addE("HasVisited").from_('a').to("b").iterate()
    

    您提供的第一个 sn-p 只是一个无效的 API。您不能直接对 Vertex 对象进行操作,您应该将其视为只读的。第二个sn-p,我不太确定。如果g.V(v2)g.V(v1) 都独立返回值,我会期望sn-p 已经创建了一条边。

    【讨论】:

    • 谢谢您,您的建议有效!我还尝试了以下 sn-p,我认为它的工作方式与您的建议相同,但得到了另一个 KeyError。您能否提供任何关于为什么它不起作用的见解? g.V(v1).as_('a').V(v2).as_('b').addE('HasVisited').from_('a').to('b').iterate()跨度>
    • 你用的是什么图数据库?
    • 我正在使用 OrientDB。
    • 这些天我对 OrientDB 的实现并不熟悉,但也许 Vertex OrientDB 的反序列化存在问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 2014-12-25
    • 2015-02-07
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2013-06-11
    相关资源
    最近更新 更多