【发布时间】:2014-11-26 13:15:58
【问题描述】:
我正在尝试在 python 中完成一些非常简单的事情,但在 Neo4j 中却不是这样。 如有任何改进程序的意见和建议,我将不胜感激!
在 Python 脚本中,我尝试为每对两个节点创建关系及其属性。通过数据分析(不是 csv 文件),我最终得到了一个包含以下三列的数据框:
name1 name2 points
===========================
Jack Sara 0.3
Jack Sam 0.4
Jack Jill 0.2
Mike Jack 0.4
Mike Sara 0.5
...
从这一点开始,我想为人们创建所有节点:Jack、Sara、Sam、Mike 等以及他们与属性名称点的关系。
首先我尝试匹配所有节点,然后使用“FOREACH”一次更新一个关系属性。
tx = graph.cypher.begin()
qs2 = "MATCH (p1:person {name:"Jack"}), (p2:person)
WHERE p2.name IN ["Sara","Jill","Mike"]
FOREACH (r IN range(10) |
CREATE (p1)-[:OWES TO {score:{score_list}[r]}]->(p2))"
上面的语句没有返回我所期望的。它不是将一个节点与另一个节点匹配,而是调用 p2 中的所有节点并创建巴黎之间的关系,从而产生相同信息的多个副本。
有没有表示一次一个节点的符号?如果您认为有比上述更好的方法,请与我分享。谢谢!
【问题讨论】:
-
range(10)是一个无效的函数调用,您从哪里获得 {score_list} 以及其中有什么? -
range (0,10) 实际上是它在代码中的使用方式。以上仅为演示,如有混淆请见谅。 {score_list} 是一个用大括号表示的参数。