赞
踩
书接上文,https://blog.csdn.net/junruitian/article/details/85834151
最近在使用非关系型数据库neo4j
由于我的server版本是3.5.0,一部分attribute不再使用
所以在这里做一个新的总结:
这里推荐python neo4j的官方文档:https://neo4j.com/docs/operations-manual/current/
非关系型数据库的存储节点通常包括三个部分(label,property_key,property_value)
1.查找对应节点:
- matcher = NodeMatcher(graph)
- node1 = matcher.match('Actor', name='布利特·卡迪雍').first()
- #print(node1)
- #(_224:Person {born:1964,name:"Keanu Reeves"})
最后一行为返回结果,这个是通过matcher的方式来进行匹配,同时在name后面依然可以添加其他条件和属性,如(某个)property_key:XXX(property_value)
2.直接也是最简单的方式(推荐),通过数据库语言进行寻找,不需要考虑python语法
- list1 = graph.run("MATCH (n:Actor) RETURN n LIMIT 25").data()
- # graph查询
- # graph.run("MATCH (n:leafCategory) RETURN n LIMIT 25").data() # list型
- # graph.run("MATCH (n:leafCategory) RETURN n LIMIT 25").to_data_frame() # dataframe型
- # graph.run("MATCH (n:leafCategory) RETURN n LIMIT 25").to_table() # table
这样直接可以得到对应的结果,相应的使用也很简单只要直接替换掉run里面的字符串就可以了。
3.找某个节点相邻的点:
- for word in content:
- result_list = graph.run("MATCH p=(na:Movie)-[r:HAS_ACTOR]->(nb:Actor) where nb.name='甘国亮' RETURN na").data()
- #str_symptom = .replace('u\'', '\'')
- result_list1=str(result_list).encode('utf-8').decode('unicode_escape')
- print(result_list1)
这一段包括(对于输出字符编码的处理),其中类似于sql语言,我们定义na,nb来指代和查找,无论是通过na来找nb还是nb来找na,当然其中的relationship也是可以return的
总结:个人认为run的使用是一种简化,只需要考虑输出结果就可以,对于return内容本身也没有限制,这一篇就到这里>.<
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。