我想使用批量插入创建与属性的关系,所以我尝试了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()
?
答案 0 :(得分:1)
您可以使用**
语法自动扩展字典,例如:
batch.create(rel(0, "KNOWS", 1, **property_dictionary))
或者,将关系类型指定为元组,例如:
batch.create(rel(0, ("KNOWS", property_dictionary), 1))
对于您的其他问题,批量成功提交后会自动清空。但是,这在版本1.6中发生了变化,必须手动完成。