Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 返回节点的更改(通过apoc.trigger)版本,而不是原始版本_Python 3.x_Neo4j_Cypher_Neo4j Apoc_Neo4j Driver - Fatal编程技术网

Python 3.x 返回节点的更改(通过apoc.trigger)版本,而不是原始版本

Python 3.x 返回节点的更改(通过apoc.trigger)版本,而不是原始版本,python-3.x,neo4j,cypher,neo4j-apoc,neo4j-driver,Python 3.x,Neo4j,Cypher,Neo4j Apoc,Neo4j Driver,我正在使用python bolt驱动程序在neo4j数据库中创建节点。这些节点通过apoc.trigger功能进行更改。我希望返回的BoltStatementResult包含这些节点的修改版本 这是我迄今为止所测试的: 我的触发器按预期工作。已正确更改存储的节点 我尝试了“之前”和“之后”阶段 我将触发器函数设置为返回修改过的版本 我确实编写了第二个查询来获取数据库的新节点和更新节点。但是这个选项非常不安全,因为它没有唯一的标识符 我的触发功能: CALL apoc.trigger.add(

我正在使用python bolt驱动程序在neo4j数据库中创建节点。这些节点通过
apoc.trigger
功能进行更改。我希望返回的
BoltStatementResult
包含这些节点的修改版本

这是我迄今为止所测试的:

  • 我的触发器按预期工作。已正确更改存储的节点
  • 我尝试了“之前”和“之后”阶段
  • 我将触发器函数设置为返回修改过的版本
  • 我确实编写了第二个查询来获取数据库的新节点和更新节点。但是这个选项非常不安全,因为它没有唯一的标识符
  • 我的触发功能:

    CALL apoc.trigger.add(
        'onCreateNodeAddMetadata',
        'UNWIND {createdNodes} AS n
         SET n.uid = apoc.create.uuid(), n.timestamp = timestamp() RETURN n',
        {phase: 'before'}
    )
    
    我希望我的
    会话.write_事务的返回值包含添加的属性。

    作为一种安全的解决方法(但请参见下面的警告),您的
    write_事务中的Cypher查询可以返回所创建节点的本机ID(例如,
    返回ID(n)

    然后,只要您知道节点未被删除,就可以使用该ID对其执行查询(在本例中,
    myID
    包含ID值,并作为ID值传递):


    如果在通过本机ID搜索节点之前可以删除该节点,那么这种技术是不安全的,因为neo4j可以将已删除节点的本机ID重新分配给另一个新创建的节点。

    我试图绕过内部ID。但因为我不打算实现删除触发器。我认为这是目前的发展方向。谢谢
    MATCH (n) WHERE ID(n) = $myId
    ...