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



我即将在neo4j中运行一个带有参数的查询,但它总是返回我一个错误。

> 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。将引用列表中的第一个元素赋值。这返回一个

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-string(使用三重引号->"")

所以代码看起来像:

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-string,删除括号,保留美元符号语法($name)而不是花括号语法,并将参数直接传递给client.run()。

:

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

最新更新