您好我正在尝试通过从另一个脚本调用该方法来运行此脚本
session = cypher.Session("http://localhost:7474")
tx = session.create_transaction()
def nodepublish(dpid, port, mac, srcip):
tx.append("MATCH (n:Switch) WHERE n.DPID='"+str(dpid)+"' RETURN n")
match_switch = tx.execute()
tx.commit()
for i in match_switch:
if(i):
print "switch exists"
else:
tx.append("CREATE (s:Switch {DPID: '"+str(dpid)+"'})")
tx.execute()
print ("switch %s node published" %(dpid))
tx.commit()
并且它总是以此错误结束
File "/home/thinker/Desktop/Thesis/ryu/ryu/app/vkryuscripts/node_switch_pub_cypher_test.py", line 11, in nodepublish
tx.append("MATCH (n:Switch) WHERE n.DPID='"+str(dpid)+"' RETURN n")
File "/usr/local/lib/python2.7/dist-packages/py2neo/cypher.py", line 194, in append
self._assert_unfinished()
File "/usr/local/lib/python2.7/dist-packages/py2neo/cypher.py", line 175, in _assert_unfinished
raise TransactionFinished()
TransactionFinished
有人可以告诉我这里的错误是什么吗?
由于
更新: 我发现了别的东西。 如果我在提交后尝试使用append,它会返回给我这个错误。
有人知道为什么吗?
答案 0 :(得分:2)
提交或回滚事务后,它将标记为“已完成”且无法重复使用。您需要为每个计划提交创建一个新事务 - 在这种情况下,将commit
移动到函数末尾或为每个循环迭代创建一个新事务。