py2neo(1)


#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))
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值