# 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')
Neo4j图数据库,用py2neo中的OGM操作(类似ORM)
最新推荐文章于 2025-06-06 20:15:45 发布