#encoding:utf-8
from py2neo import Node,Relationship
from py2neo import Node,Relationship
#创建节点 就是 实体有类型 Person 英雄 道具
a=Node("Person",name="alice")
b=Node("Person",name="bob")
r=Relationship(a,'knows',b)
print(a,b,r) # (:Person {name: 'alice'}) (:Person {name: 'bob'}) (alice)-[:knows {}]->(bob)
#增加节点属性
a['age']=20
b['age']=21
r['time']='2017/08/31'
print(a,b,r) # (:Person {age: 20, name: 'alice'}) (:Person {age: 21, name: 'bob'}) (alice)-[:knows {time: '2017/08/31'}]->(bob)
#设置属性的默认值
a.setdefault("location",'beijing')
print(a) # (:Person {age: 20, location: 'beijing', name: 'alice'})
#原来属性存在则sedefault不会覆盖该属性
a['location']='shanghai'
print(a)# (:Person {age: 20, location: 'shanghai', name: 'alice'})
a.setdefault("location",'beijing')
print(a)# (:Person {age: 20, location: 'shanghai', name: 'alice'})
#可以通过字典更新属性值
data={'name':"any","age":21}
a.update(data)# (:Person {age: 21, location: 'shanghai', name: 'any'})
print(a)
#子图是 node和 relationship的集合 最简单的构造子图的方式是通过关系运算符来连接节点和关系
a=Node("person",name="Alice")
b=Node("person",name='Bob')
s=a|b|r #s是一个子图
print(s)
#可以通过 nodes()和 relationships() 方法获取所有的node和 relationship
#print(s.nodes())
#print(s.relationship())
#还可以利用&获取 subgraph的交集
s1=a|b|r
s2=a|b
print(s1&s2)
#还可以利用keys()/labels(), nodes() relationships() types() 分别获取 subgraph的 key label node relationship ,relationship type
#print(s1.keys()) # frozenset({'name', 'location', 'time', 'age'}) 返回的是 节点或者关系的 所有属性的 key
print(s1.labels)# frozenset({'Person', 'person'}) 获取所有节点的 类型
print(s1.nodes) # <py2neo.internal.collections.SetView object at 0x000002037E9DD048>#返回所有的节点
print(s1.relationships) # <py2neo.internal.collections.SetView object at 0x0000023DED5E06A #返回所有的关系
print(s1.types()) # frozenset({'knows'}) #返回所有的关系类型
#还可以通过 order()
s=a|b|r
#walkable 是增加了遍历信息的subgraph ,我们通过+号 便可以构建一个walkable对象
a=Node('Person',name="alice")
b=Node("Person",name='bob')
c=Node('Person',name='mike')
ab=Relationship(a,'knows',b)
ac=Relationship(a,'konws',c)
w=ab+Relationship(b,'likes',c)+ac
#通过 walk方法 实现遍历
from py2neo import walk
for a in walk(w):
print(a)
#(:Person {name: 'alice'})
#(alice)-[:knows {}]->(bob)
#(:Person {name: 'bob'})
#(bob)-[:likes {}]->(mike)
#(:Person {name: 'mike'})
#(alice)-[:konws {}]->(mike)
#(:Person {name: 'alice'})
#通过 start_node() end_node() ,nodes(),relationships()方法 获取 起始node,终止node,所有node,和 relationship
print(w.start_node) # (:Person {name: 'alice'})
print("//")
print(w.end_node) # (:Person {name: 'alice'})
print(w.nodes) # ((:Person {name: 'alice'}), (:Person {name: 'bob'}), (:Person {name: 'mike'}), (:Person {name: 'alice'}))
print(w.relationships) # ((alice)-[:knows {}]->(bob), (bob)-[:likes {}]->(mike), (alice)-[:konws {}]->(mike))
py2neo(1)
最新推荐文章于 2024-07-30 18:25:33 发布