赞
踩
from py2neo import Graph,Node,Relationship
graph = Graph("http://localhost:7474",auth=("neo4j","fHw5280***"));
a = Node('Person', name='宋老三')
b = Node('Person', name='王老二')
r = Relationship(a, 'Love', b)
#亦可以传入Subgraph r = a | b | r 效果相同
graph.create(r)
我姑且将Node和Relation看作一种特殊的Dict形式
Node:节点的实体对象
#设置key键对应的value,如果value是None就移除这个property a['age'] = 20 b['age'] = 22 r['time'] = '2020-01-01' #获取key对应的property x=a['age'] #返回所以和这个节点有关的label labels=a.labels #返回node里面property的个数 z=len(a) #删除某个property del r['time'] #删除某个label a.labels.remove('Person') #将node的所有property以dictionary的形式返回 dict(a)
Relation:两者关系的实体对象
#创建Relationship
Relationship`(*start_node*, *type*, *end_node*, ***properties*)
#返回Relationship的property
Relationship[key]
#删除某个property
del Relationship[key]
#将relationship的所有property以dictionary的形式返回
dict(relationship)
备注:dict的update与setdefault等方法均可使用
Subgraph:子图,顾名思义,neo4j是一张完整的图,从中取出的一部分Node与Relation的集合便称作子图,我姑且理解为Mysql中的视图,无法改变它们的属性,看作一种视角
#构建方法
s = a | b | r #或理解为加到一起,可用于构建子图
s = a & b & r #同上理解,取交集
s = a - b #去除相同关系,保留不同关系
print(s)
print(s.nodes()) #子图所有节点
print(s.relationships())#子图所有关系
print(s.keys())#子图所有Key
print(s.labels())#子图所有标签 我姑且理解为Node的类
print(s.types())#子图所有类型 我姑且理解为Relation的name
print(order(s))#子图节点数
print(size(s))#子图关系数
注:markdown真好用 Tab整体缩进,Shift+Tab整体退格
Walkable:没啥可说,可以遍历的子图,构建上比子图多了开始节点和终止节点
from py2neo import walk
#构建walkable
ab = Relationship(a, "LOVE", b)
ac = Relationship(a, "LOVE", c)
w = ab + Relationship(b, "LIKES", c) + ac
print(w)
#遍历walkable
for item in walk(w):
print(item)
#walkable方法
print(w.start_node()) #开始节点
print(w.end_node()) #结束节点
print(w.nodes()) #所有节点
print(w.relationships()) #所有关系
有点累了,先去吃饭,回头再继续码 ( ̄▽ ̄)"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。