Neo4j图数据库,用py2neo中的OGM操作(类似ORM)

# Object-Graph Mapping将图数据库中的节点映射为python对象,通过对象的方式对节点进行访问和操作。

# 将图中的每种标签定义为一个python类,其继承自GraphObject,注意使用前先import。

# 在定义时可以指定数据类的主键,并定义类的属性Property()、标签Label()、关系RelatedTo()/RelatedFrom。

from py2neo.ogm import GraphObject, Property, RelatedTo, RelatedFrom, Label

class Person(GraphObject):
    
# 定义主键

__primarykey__ = 'name'

# 定义类的属性

name=Property()

age=Property()

# 定义类的标签

student=Label()

# 定义Person指向的关系

knows=RelatedTo('Person','KNOWS')

# 定义指向Person的关系

known=RelatedFrom('Person','KNOWN')

# 通过类方法wrap()可以将一个普通节点转化为类的对象

# 例如:将节点c转化为OGM类型

c=Person.wrap(c)

print(c.name)

# 查找Person类中主键(name)为Alice的节点

ali=Person.match(graph,'Alice').first()

# 获取所有name以B开头的Person对象

Person.match(graph).where("_.name =~ 'B.*'")

# 创建一个新的Person对象并对其属性赋值

new_person = Person()

new_person.name = 'Durant'

new_person.age = 28

# 标签值默认为False

print(new_person.student)

# 修改bool值为True,为对象添加student标签

new_person.student=True

# 更新图中ali节点的相关数据(把节点里面的数据,写入数据库)

graph.push(ali)

# 用图中的信息来更新ali节点(数据库里面的数据,覆盖图里数据)

graph.pull(ali)

# 删除图中的ali对象节点(删除数据库中的节点)

graph.delete(ali)

# 新建一个从ali指向new_person的关系

ali.knows.add(new_person)

# 清除ali节点所有的know关系

ali.knows.clear()

# 清除ali节点指向new_person的那个know关系

ali.knows.remove(new_person)

# 更新ali指向new_person关系的属性值

ali.knows.update(new_person,year=5)

# 获取ali指向new_person关系的属性year的值

ali.knows.get(new_person,'year')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

结伴同行~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值