我尝试通过WriteBatch在py2neo中使用一个cypher语句和参数创建大量关系(16k)。如果尝试只创建10个(左右)关系,它可以正常工作。但是有了16k的关系,Neo4j服务器挂起了100%的CPU而且py2neo出现错误(过了一会儿)。
我使用以下代码创建关系:
graph_db_batch = neo4j.WriteBatch(graph_db)
graph_db_batch.append_cypher\
(\
"\
FOREACH (par in {params} |\
MERGE (s:users {userid1:par.sval})-[r:MEMBER_OF]->(e:groups {groupid:par.eval})\
SET r = par.cprops\
);\
",\
object_props\
)
graph_db_batch.run()
object_props 如下所示:
{'params': [{'sval': 'userA', 'cprops': {'marked': 1, 'datedeleted': 0}, 'eval': 'groupX'}, {'sval': 'userB', 'cprops': {'marked': 1, 'datedeleted': 0}, 'eval': "groupY"}]}