一、创建Project
- 我这里是通过pycharm直接创建Python3.7环境下的工程,Py2neo版本为4.3,正常运行
- 创建python文件import py2neo,并连接数据库
from py2neo import Graph,Node,Relationship graph = Graph("http://localhost:7474",auth=("neo4j","fHw5280***"));
- 创建Node节点
创建结果a = Node('Person', name='宋老三') b = Node('Person', name='王老二') r = Relationship(a, 'Love', b) #亦可以传入Subgraph r = a | b | r 效果相同 graph.create(r)
Node和Relationship可以定义对应的实例,Node第一个参数是label, 再利用graph.create()创建
二、Object操作方法
我姑且将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()) #所有关系
有点累了,先去吃饭,回头再继续码 ( ̄▽ ̄)"