Neo4j py2neo事务在循环中的某处提交重复节点

时间:2017-01-13 22:45:18

标签: python-3.x neo4j py2neo

我正在使用py2neo 3.1.2,并尝试在循环中创建多个节点,并将它们全部连接到单个节点。我已经获得了代码的简化版本,但仍然证明了这个问题:

from py2neo import Graph, Node, Relationship
graph = Graph('http://localhost/db/data/', username="neo4j", password="myPassword")

tx = graph.begin()
source = Node("Source",id="test2")
for i in range(0,20):
    node = Node("Datum",id=i)
    rel = Relationship(source,"SourceOf",node)
    tx.create(rel)
tx.commit()

在我的数据库中,"来源"节点具有唯一性约束,并且查询失败,因为正在复制ID。我已经清除了其他" Source"的数据库。节点,因此它在此循环中被复制。没有唯一性约束,代码可以工作,但有两个相同的" Source"节点,一个与除了我的一个以外的所有节点相关的数据" Datum"节点,以及一个与单个" Datum"相关的节点。节点

如果我不使用该交易,请执行此操作:

source = Node("Source",id="test2")
for i in range(0,20):
    node = Node("Datum",id=i)
    rel = Relationship(source,"SourceOf",node)
    graph.create(rel)

它有效,但比交易慢。我可以继续使用graph.create方法,但我很好奇这是一个错误,还是我只是以错误的方式接近它。

0 个答案:

没有答案