使用py2n时在节点之间创建批处理关系时出现异常

2024-05-18 23:28:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我用py2neo创建了一个图形数据库,目的是:

  • 为每个城市创建一个节点。节点存储城市名称和与之关联的唯一id。在
  • 为每个机场创建一个节点。airport节点存储机场名称和唯一的id
  • 如果机场位于城市,则在城市节点和机场节点之间创建关系。在

我首先(成功地)使用此模块创建了城市节点:

batch = neo4j.WriteBatch(graph_db)    
for city_id,city_name in <some_list>:
     city_node_id = batch.create(node(city_id=city_id, name=city_name))
     batch.add_indexed_node('city_index','city_id',city_id, city_node_id)
batch.submit()

然后在另一个单独的模块中,我尝试创建机场节点以及机场节点和相应城市节点之间的关系,如下所示:

^{pr2}$

我创建关系的最后一条语句中的第三条语句引发异常:

rel_id = write_batch.create(rel(airport_node_id, "is in city", city_node_id))
File "/usr/local/lib/python2.7/dist-packages/py2neo/neo4j.py", line 2695, in create
"to": self._uri_for(entity.end_node)
File "/usr/local/lib/python2.7/dist-packages/py2neo/neo4j.py", line 2537, in _uri_for
uri = "{{{0}}}".format(self.find(resource))
File "/usr/local/lib/python2.7/dist-packages/py2neo/neo4j.py", line 2528, in find
raise ValueError("Request not found")
  ValueError: Request not found

我试图打印这两种类型节点的uri。它们的区别在于:

print station_node_id._uri, city_node_id._uri

输出:

node index/node/city_index/city_id/2536650

所以这两个节点的uri是不同的,这就是为什么我猜没有创建关系。在

我可以使用哪个函数来返回城市的未索引节点,即uri应该只是“node”而不是“index/node/city_index/city_id/”。在

有没有其他方法来建立这种关系?在

如果需要的话,我很乐意提供任何其他信息。 提前谢谢!在

Neo4j:1.9.5

py2neo:1.6.1


Tags: nameinidnodecityforindex节点
1条回答
网友
1楼 · 发布于 2024-05-18 23:28:45

您看到的是一个不幸的服务器限制,一些REST调用返回的位置URI包含节点索引条目URI,而不是标准节点URI。不幸的是,这只在少数用例中有用,在像您这样的情况下是一个主要的限制。在

这里讨论了一个类似的问题-https://github.com/nigelsmall/py2neo/issues/221-不幸的是,我在客户端无能为力。在

您唯一的选择是将工作分成多个批处理,或者考虑升级到neo4j2.0,在那里可以使用新的标签和模式索引功能。在

相关问题 更多 >

    热门问题