在 neo4j 查询中添加 python 列表参数

Adding a python list parameter in a neo4j query

我正要 运行 在 neo4j 中使用参数进行查询,但它总是 returns 我出错。

> query= ("MATCH (p1:Item),(p2:Item) where p1.value=$name
> RETURN  p1.value AS from, p2.value AS to,
> gds.alpha.similarity.euclideanDistance((p1.embeddingNode2vec),
> (p2.embeddingNode2vec)) AS similarity order by similarity desc limit
> 40", name=references[2])

p1.value 引用列表中的第一个元素。这个returns我一个

SyntaxError: invalid syntax

错误。你能告诉我如何 运行 吗? 我目前的研究:https://community.neo4j.com/t/how-to-use-dictionary-parameters-in-python-neo4j/18626

MATCH (p1:Item),(p2:Item) where p1.value=$params RETURN  p1.value AS from, p2.value AS to, gds.alpha.similarity.euclideanDistance((p1.embeddingNode2vec), (p2.embeddingNode2vec)) AS similarity order by similarity desc limit 40

然后像这样调用查询执行:

nodes = graphDB_Session.run(query, params= references[1])

最好看代码的更多细节,但看起来问题是括号。 通常,当我在 python 中进行多行查询时,我会使用多行 f 字符串(使用三重引号 -> """)

所以代码看起来像:

query= f"""MATCH (p1:Item),(p2:Item) where p1.value={references[2]}
RETURN  p1.value AS from, p2.value AS to,
gds.alpha.similarity.euclideanDistance((p1.embeddingNode2vec),
(p2.embeddingNode2vec)) AS similarity order by similarity desc limit
40"""

obs:也许您必须为参数 ('{references[2]') 插入单引号,以便 Neo4J 将其识别为字符串而不是变量)。

这样你就不需要在 session.run 方法中传递参数了。 请小心并记住正确转义代码中的任何花括号(只需复制它 { -> {{ )

如果不想使用 f 字符串,请删除括号,保留美元符号语法($name)而不是大括号语法并将参数直接传递到 client.run().

像这样:

run = client.run(query, name=references[2])