我正在尝试使用py2neo批量apicreate_relationship()
在neo4j数据库中批量创建关系。
我在列表中有多种关系类型(如knows、follows等),而且我想在图形数据库中创建大量关系(超过3000万)。
目前我正在使用Neo4j Desktop 1.4.7和python版本3.9
我已经使用create_nodes()
py2neo.bulk api批量创建了节点。
下面是相同的示例代码:
from py2neo import Graph
from py2neo.bulk import create_nodes,create_relationships
from py2neo.data import Node
graph = Graph(auth=('neo4j', 'abc123'))
one_node=Node("Person", name="Alice", nid="01")
two_node=Node("Person", name="ACME", nid="02")
t_node=Node("Person", name="Mahi", nid="03")
f_node=Node("Person", name="Ali", nid="04")
data = []
data.append(one_node)
data.append(two_node)
data.append(t_node)
data.append(f_node)
try:
create_nodes(graph.auto(), data, labels={"Person"})
except Exception as error:
print(error)
try:
graph.run("CREATE INDEX ON :Person(nid)")
except Exception as error:
print(error)
#I have created a relationship using create_relationship() api of
#py2neo.bulk. Below is the sample code for the same.
rel_data= [
("01", {}, "02"),
("03", {}, "04"),
]
try:
create_relationships(graph.auto(), rel_data, "WORKS_FOR", \
start_node_key=("Person", "nid"), end_node_key=("Person", "nid"))
except Exception as error:
print(error)
我面临以下问题:
在上面的代码中,如果我为所有3000万个节点提供一个关系类型,那么数据只需74秒就可以插入。但是我想在Neo4j中插入的数据有多种关系类型(就像我提到的文件有79种关系类型,每种类型都有自己的数据集)。因此,我用它自己的数据调用了create_relationship()
API 79次,花了9分钟才完成。所以结论是单一的关系类型可以提供更好的性能,我们可以在一次访问create_relationship()
API中提供多个关系类型
在上面的代码中,如果我没有为create_relationship()
API提供开始键和结束键,那么创建边的性能会变快,但缺少一些边,但是如果我提供开始键和结束键(如上面的代码所示),那么性能会变慢。那么,有没有更好的方法来建立大量的关系呢?仅供参考在我们的例子中,我们不想使用Load csv
查询,如果可能,请建议其他解决方案
在调查过程中,我从py2neo库中找到了一些WriteBatch
样本,用于创建我们自己的批处理,但我无法在py2neo中导入neo4j模块,该模块具有WriteBatch()
API,因为我使用的是py2neo版本2021.1。那么,有没有办法解决这个问题,或者有没有其他办法使用py2neo创建自己的批处理
先谢谢你
目前没有回答
相关问题 更多 >
编程相关推荐