在 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])
我正要 运行 在 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])