py2neo:使用批处理创建与属性的关系

时间:2013-09-13 18:51:54

标签: python neo4j py2neo

我想使用批量插入创建与属性的关系,所以我尝试了py2neo documenation中的以下示例:

batch = neo4j.WriteBatch(graph_db)
batch.create(node(name="Alice"))
batch.create(node(name="Bob"))
#batch.create(rel(0, "KNOWS", 1, since=2006, reason="unknown")) # This would work
property_dictionary = {"since": 2006, "reason": "unknown"}
batch.create(rel(0, "KNOWS", 1, property_dictionary)) # Does NOT work
batch.submit()

为什么不能指定字典来为关系分配属性? 如何批量创建与属性存储在SOME_PROPERTIES_VARIABLE中的属性的关系,例如类似的东西:

batch.create(rel(0, "KNOWS", 1, SOME_PROPERTIES_VARIABLE))

SOME_PROPERTIES_VARIABLE如何看起来像?

对于批处理函数get_or_create_indexed_relationship,我可以简单地使用字典作为属性,例如:

batch.get_or_create_indexed_relationship(my_rel_index, my_rel_key, my_rel_value, 0, "KNOWS", 1, properties=property_dictionary)

这正是我要找的,除了我不想索引关系。

我正在使用Neo4j 1.9.2和py2neo 1.5.1 - 谢谢!

其他问题:batch.submit()之后的批次是空的还是我还必须执行batch.clear()

1 个答案:

答案 0 :(得分:1)

您可以使用**语法自动扩展字典,例如:

batch.create(rel(0, "KNOWS", 1, **property_dictionary))

或者,将关系类型指定为元组,例如:

batch.create(rel(0, ("KNOWS", property_dictionary), 1))

对于您的其他问题,批量成功提交后会自动清空。但是,这在版本1.6中发生了变化,必须手动完成。