gpt4 book ai didi

neo4j - 获取节点/边创建/删除统计信息

转载 作者:行者123 更新时间:2023-12-04 09:22:29 37 4
gpt4 key购买 nike

我正在运行 Python (3.8)使用 pip 的脚本图书馆neo4j 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 .
然而, Result实例在 run_res没有任何 ResultSummary里面有一个 SummaryCounters例如,我可以访问创建的节点和关系的统计信息。
我怀疑这是因为:
"RETURN distinct 'done' "
但是,我不确定这是否是原因。
希望有人可以帮助我设置我的查询,无论 MERGE的数量如何。我执行的操作,我得到了在 crt_stmt 中发送的整个查询的统计信息。 .
非常感谢。

最佳答案

使用较早的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() ,此行为是消耗缓冲区中所有剩余的记录并返回 ResultSummary .
您可以通过 counters = run_res.consume().counters 获取所有计数器

关于neo4j - 获取节点/边创建/删除统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63076269/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com