python - Py2neo 密码查询结果为 _assert_unfinished。有人可以告诉我为什么吗?

标签 python neo4j py2neo

您好,我正在尝试通过调用另一个脚本中的方法来运行此脚本

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

有人可以告诉我这里的错误是什么吗?

谢谢

更新: 我发现了别的东西。 如果我尝试在提交后使用追加,它会返回此错误。

有人知道为什么吗?

最佳答案

事务一旦提交或回滚,就会被标记为“已完成”并且不能重复使用。您需要为每个计划提交创建一个新事务 - 在这种情况下,要么将提交移动到函数末尾,要么为每个循环迭代创建一个新事务。

关于python - Py2neo 密码查询结果为 _assert_unfinished。有人可以告诉我为什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25983807/

相关文章:

python - 生成元组的修改副本

python - 使用 Scippy 的 ndimage.map_coordinates 进行插值时出现意外结果

neo4j - 如何在 Neo4j 中编写查询?

neo4j - 使用 Python 在 Neo4j 中获取节点 ID

neo4j - Neo4j 中性能缓慢的批量更新关系属性

python - 创建索引时死锁

python - PyMongo Atlas Search 不返回任何内容

Python 多线程 - 使用 While 语句运行时未释放内存

python - py2neo 不在 Neo4j 数据库中强制执行唯一性约束

python - Python py2neo SocketError : Connection Refused