获取 node/edge creation/removal 统计信息

Getting node/edge creation/removal statistics

我是 运行 一个 Python (3.8) 脚本,它使用 pipneo4j 4.0.0 与社区版 neo4j 4.1.1 服务器交互。

我是 运行 许多使用 MERGE 更新或创建节点和关系不存在的查询。 到目前为止,这运行良好,因为数据库正在按预期获取数据。

在我的脚本方面,我想知道在每个查询中创建了多少个节点和边。 问题是,在我从我的脚本发送到数据库的这些 Cypher 查询中,我多次调用 MERGE 并且还使用 APOC 过程(尽管 APOC那些只是为了更新标签,他们不创建实体)。

这是一个查询示例:

comment_field_names: List[str] = list(threads[0].keys())
cypher_single_properties: List[str] = []
for c in comment_field_names:
    cypher_single_properties.append("trd.{0} = {1}.{0}".format(c, "trd_var"))
cypher_property_string: str = ", ".join(cypher_single_properties)


with driver.session() as session:
    crt_stmt = ("UNWIND $threads AS trd_var "

                "MERGE (trd:Thread {thread_id:trd_var.thread_id}) "
                "ON CREATE SET PY_REPLACE "
                "ON MATCH SET PY_REPLACE "

                "WITH trd AS trd "
                "CALL apoc.create.addLabels(trd, [\"Comment\"]) YIELD node "

                "WITH trd as trd "
                "MERGE (trd)-[r:THREAD_IN]->(Domain {domain_id:trd.domain_id}) "
                "ON CREATE SET r.created_utc = trd.created_utc "
                "ON MATCH SET r.created_utc = trd.created_utc "

                "RETURN distinct 'done' ")
    crt_params = {"threads": threads}

    # Insert the individual properties we recorded earlier.
    crt_stmt = crt_stmt.replace("PY_REPLACE", cypher_property_string)
    
    run_res = session.run(crt_stmt, crt_params)

这工作正常,并且使用从 threads Dict 传递的属性创建节点,该属性通过变量 crt_params 传递到 UNWIND.

但是,run_res 中的 Result 实例内部没有任何 ResultSummarySummaryCounters 实例供我访问已创建节点和关系的统计信息。 我怀疑这是因为:

"RETURN distinct 'done' "

不过,我不确定是不是这个原因。

希望有人可以帮助我设置查询,这样无论我执行了多少 MERGE 操作,我都能得到在 [=32= 中发送的整个查询的统计信息].

非常感谢。

使用较早的neo4j版本时,您可以写n = result.summary().counters.nodes_created,但从4.0开始,summary()方法不存在。

现在我从https://neo4j.com/docs/api/python-driver/current/breaking_changes.html中发现Result.summary()已经被Result.consume()代替了,这个行为是消耗缓冲区中所有剩余的记录和returns ResultSummary.

您可以通过counters = run_res.consume().counters

获得所有计数器