如何在gremlin python中添加两个现有顶点之间的边



Gremlin-按预期工作

gremlin> vMarko = g.V().addV("person").property("name", "Marko").next()
==>v[1]
gremlin> vPeter = g.V().addV("person").property("name", "Peter").next()
==>v[6]
gremlin> g.V(vMarko).addE('knows').to(vPeter) //// (6)
==>e[22][1-knows->6]

Gremlin Python-按预期工作

edge = g.add_v('person').property('name', 'Peter').as_('p2').add_v('person').property('name', 'Marko').addE('knows').to('p2').toList()
print(edge)
==> [e[74926][74924-knows->74922]]

Gremlin Python-不工作

v_marko = g.add_v('person').property('name', 'Marko').next()
v_peter = g.add_v('person').property('name', 'Peter').next()
print(type(v_marko))
edge = g.V(v_marko).addE('knows').to(v_peter).toList()  # doesn't work
print(edge)
==>  []

我无法重现此问题。使用我加载的图形和在Python控制台中运行的Gremlin Python:

>>> a=g.V('3').next()
>>> a
v[3]
>>> type(a)
<class 'gremlin_python.structure.graph.Vertex'>
>>> g.V(a).next()
v[3]
>>> b=g.V('4').next()
>>> g.addE('temp').from_(a).to(b).next()
e[62c2124a-f105-6558-343f-acd56ccfac66][3-temp->4]
>>> c=g.addV('temp').next()
>>> g.V(c).addE('temp').to(b).next()
e[0ac2124c-7230-dba0-9088-e66824d74b31][c0c2124b-f30c-bdea-7572-5127103f32c7-temp->4]
>>> g.E().hasLabel('temp').toList()
[e[62c2124a-f105-6558-343f-acd56ccfac66][3-temp->4], e[0ac2124c-7230-dba0-9088-e66824d74b31][c0c2124b-f30c-bdea-7572-5127103f32c7-temp->4]
] 

我还尝试过使用您的查询(我将add_v更改为addV,因为我相信我的客户端比您的客户端稍老,而且还没有添加额外的Python习语支持(。

>>> v_marko = g.addV('person').property('name', 'Marko').next()
>>> v_peter = g.addV('person').property('name', 'Peter').next()
>>> v_marko
v[0cc2124f-ec77-8d58-eaf2-7075c166fd5d]
>>> v_peter
v[a0c21250-0f11-b7d9-b2cb-2ddefc5e8749]
>>> edge = g.V(v_marko).addE('knows').to(v_peter).toList()
>>> edge
[e[3ac21250-3de9-9e13-24f5-b61854c4c46d][0cc2124f-ec77-8d58-eaf2-7075c166fd5d-knows->a0c21250-0f11-b7d9-b2cb-2ddefc5e8749]]
>>>

我使用AmazonNeptune作为数据库和以下客户端版本进行了测试。

>>> from gremlin_python import __version__
>>> __version__.version
'3.5.2'

最新更新