我希望使用批处理插入创建与属性的关系,因此我尝试了py2neo 文献化中的以下示例
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()
?
发布于 2013-09-14 01:58:49
您可以使用**
语法自动展开字典,例如:
batch.create(rel(0, "KNOWS", 1, **property_dictionary))
或者,将关系类型指定为元组,例如:
batch.create(rel(0, ("KNOWS", property_dictionary), 1))
对于您的附加问题,该批将在成功提交后自动清空。但是,这在1.6版中发生了变化,必须手动完成。
https://stackoverflow.com/questions/18793259
复制相似问题