Python中Cypher查询返回多结果正常、单结果为空,该如何处理
你遇到的问题核心是Cypher参数占位符的写法错误:
使用Neo4j驱动传递查询参数时,$name这类占位符不需要手动加单引号包裹。你写的n.name='$name'会被驱动识别为匹配name字段值等于字符串$name的节点,自然返回空结果。你在控制台能执行成功,是因为你手动把$name替换成了带引号的实际值,和驱动传参的逻辑不一样。
修正后的查询代码
# 去掉$name外层的单引号即可 result = tx.run("MATCH (n:Page) WHERE n.name = $name RETURN n.link", name=name)
单结果Cypher查询的最优处理方式
不需要遍历整个结果列表,直接用驱动提供的single()方法提取唯一匹配的记录即可:
record = result.single() if record: # 匹配到节点时取出link属性 link = record["n.link"] print(link) else: # 无匹配节点的自定义处理逻辑 print("无对应节点数据")
内容的提问来源于stack exchange,提问作者t2botond
相关产品推荐
相关产品推荐

