文章目录
- 1.公式模式是语法范式
2.代码模式是实例,可按顺序复制执行 3.该教程全部使用py2neo的内置方法,不使用run运行neo4j 4.涉及所有可能的节点、节点类型、属性,关系,关系类型、属性的增删改查
- import py2neo from py2neo import Graph, Node, Relationship, RelationshipMatcher, NodeMatcher graph = Graph("http://localhost:7474",user ="",password='') # 用pycharm打开neo4j工作台连接,默认的端口号就是7474,输入自己的账号密码
- 节点=Node(节点标签,属性名1=属性值1,属性名2=属性值2)节点=Node(节点标签, 属性名1=属性值1, 属性名2=属性值2) 节点=Node(节点标签,属性名1=属性值1,属性名2=属性值2) node1 = Node('Person', name='tony', age=25, weight=55) node2 = Node('Person', name='tom', age=23, weight=50, hight=170) node3 = Node('Person','male','Suspect', name='peter', age=22, weight=48, hight=165) node4 = Node('Person','female',name='lisa', age=21, weight=46) node5 = Node('Person')
- 关系=Relationship(节点1,关系类型,节点2,属性1=属性值1,属性2=属性值2)关系=Relationship(节点1,关系类型,节点2,属性1=属性值1,属性2=属性值2) 关系=Relationship(节点1,关系类型,节点2,属性1=属性值1,属性2=属性值2) relation1 = Relationship(node1, 'KNOW', node2) relation2 = Relationship(node1, 'KNOW', node3, strong=85) relation3 = Relationship(node1, 'COUPLE', node4, value=90) relation4 = Relationship(node4, 'MATE', node2, strong=40) relation5 = Relationship(node2, 'KNOW', node3, strong=60)
-
- graph.create(节点)graph.create(节点) graph.create(节点) graph.create(node1) graph.create(node2) graph.create(node3) graph.create(node4) graph.create(node5)
- graph.create(关系)graph.create(关系) graph.create(关系) graph.create(relation1) graph.create(relation2) graph.create(relation3) graph.create(relation4) graph.create(relation5)
-
- 节点[属性名]=属性值graph.push(节点)节点[属性名]=属性值\\ graph.push(节点) 节点[属性名]=属性值graph.push(节点) node1['hight']=190 node1['age']=26 graph.push(node1)
- del节点[属性名]graph.push(节点)del \quad 节点[属性名]\\ graph.push(节点) del节点[属性名]graph.push(节点) del node1['age'] graph.push(node1)
- 节点.add_label(标签1)graph.push(node1)节点.remove_label(标签1)graph.push(node1)节点.add\_label(标签1)\\ graph.push(node1)\\ 节点.remove\_label(标签1)\\ graph.push(node1) 节点.add_label(标签1)graph.push(node1)节点.remove_label(标签1)graph.push(node1) node1.add_label('male') graph.push(node1) node3.remove_label('Suspect') graph.push(node3)
- 节点.update_labels([标签1,标签2])graph.push(节点)节点.update\_labels( [标签1, 标签2] )\\ graph.push(节点) 节点.update_labels([标签1,标签2])graph.push(节点) node2.update_labels(['male','Suspect']) graph.push(node2)
- graph.delete(节点)#把关系一同删除graph.delete(节点) \quad\# 把关系一同删除 graph.delete(节点)#把关系一同删除 graph.delete(node5)
-
- 关系[属性名]=属性值graph.push(关系)关系[属性名] = 属性值\\ graph.push(关系) 关系[属性名]=属性值graph.push(关系) relation2['strong']=90 graph.push(relation2)
- del关系[属性名]graph.push(关系)del \quad 关系[属性名]\\ graph.push(关系) del关系[属性名]graph.push(关系) del relation3['value'] graph.push(relation2)
- relation=RelationshipMatcher(graph)关系组=relation.match(nodes=[节点1,节点2],r_type=关系类型,limit=None)for关系 in关系组:graph.seperate(关系)relation = RelationshipMatcher(graph)\\ 关系组 = relation.match(nodes=[节点1, 节点2], r\_type=关系类型, limit=None)\\ for\ \ 关系 \ \ in \ \ 关系组:\\ graph.seperate(关系) relation=RelationshipMatcher(graph)关系组=relation.match(nodes=[节点1,节点2],r_type=关系类型,limit=None)for 关系 in 关系组:graph.seperate(关系) relation_matcher = RelationshipMatcher(graph) # 生成关系匹配器 #;例子1 删除所有couple关系 relations = relation_matcher.match(r_type='COUPLE') # 可迭代对象 for relation in relations:graph.separate(relation) # 例子2 删除node1和node2的关系 relations = relation_matcher.match([node1,node2]) # 可迭代对象 for relation in relations:graph.separate(relation)
- graph.delete(关系)graph.delete(关系) graph.delete(关系) graph.delete(relation2) # 删除tony和peter关系和节点 # 这个就不示范了
-
- (1) 根据特定属性值查询,结果为字典构成的可迭代: node_matcher=NodeMatcher(graph)node_matcher.match(节点类型1,节点类型2,属性1=属性值1,属性2=属性值2)node\_matcher = NodeMatcher(graph)\\ node\_matcher.match(节点类型1, 节点类型2, 属性1=属性值1, 属性2=属性值2)\\ node_matcher=NodeMatcher(graph)node_matcher.match(节点类型1,节点类型2,属性1=属性值1,属性2=属性值2) node_matcher = NodeMatcher(graph) # 节点匹配器 a = node_matcher.match('female',age=21) # 提取满足属性值的节点 (2) 根据复杂规则遍历查找特定条件的节点,结果为字典构成的可迭代: nodes=node_matcher.match()fornodeinnodes:规则nodes = node\_matcher.match()\\ for\ \ node\ \ in\ \ nodes:\\ 规则 nodes=node_matcher.match()for node in nodes:规则 nodes = node_matcher.match() # 直接提取所有节点 for node in nodes:if node['weight'] < 50:print(node)
-
- 根据关系属性特定值匹配,匹配结果为字典构成的可迭代 relation_matcher=RelationshipMatcher(graph)关系=relation_matcher.match(r_type=关系类型,属性1=属性值1)relation\_matcher = RelationshipMatcher(graph)\\ 关系 = relation\_matcher.match(r\_type=关系类型, 属性1=属性值1) relation_matcher=RelationshipMatcher(graph)关系=relation_matcher.match(r_type=关系类型,属性1=属性值1) relation_matcher = RelationshipMatcher(graph) # 关系匹配器 relations = relation_matcher.match(r_type='KNOW', strong=60) # 提取特别属性的关系 根据复杂规则遍历查找特定条件关系,匹配结果为字典构成的可迭代 relations=relation_matcher.match()forrelationinrelations:规则relations = relation\_matcher.match()\\ for \ \ relation\ \ in\ \ relations:\\ 规则 relations=relation_matcher.match()for relation in relations:规则 relations = relation_matcher.match() # 提取所有关系 for relation in relations:if relation['strong'] > 20:print(relation)
- graph.match(nodes=[节点1,节点2],r_type=关系类型,limit=None)graph.match(nodes=[节点1, 节点2], r\_type=关系类型, limit=None) graph.match(nodes=[节点1,节点2],r_type=关系类型,limit=None) graph.match(nodes=[node1, node3], r_type='KNOW', limit=None)
1.公式模式是语法范式
2.代码模式是实例,可按顺序复制执行
3.该教程全部使用py2neo的内置方法,不使用run运行neo4j
4.涉及所有可能的节点、节点类型、属性,关系,关系类型、属性的增删改查
1.公式模式是语法范式
2.代码模式是实例,可按顺序复制执行
3.该教程全部使用py2neo的内置方法,不使用run运行neo4j
4.涉及所有可能的节点、节点类型、属性,关系,关系类型、属性的增删改查
import py2neo
from py2neo import Graph, Node, Relationship, RelationshipMatcher, NodeMatcher
graph = Graph("http://localhost:7474",user ="",password='')
# 用pycharm打开neo4j工作台连接,默认的端口号就是7474,输入自己的账号密码
import py2neo
from py2neo import Graph, Node, Relationship, RelationshipMatcher, NodeMatcher
graph = Graph("http://localhost:7474",user ="",password='')
# 用pycharm打开neo4j工作台连接,默认的端口号就是7474,输入自己的账号密码
节点=Node(节点标签,属性名1=属性值1,属性名2=属性值2)节点=Node(节点标签, 属性名1=属性值1, 属性名2=属性值2) 节点=Node(节点标签,属性名1=属性值1,属性名2=属性值2)
node1 = Node('Person', name='tony', age=25, weight=55)
node2 = Node('Person', name='tom', age=23, weight=50, hight=170)
node3 = Node('Person','male','Suspect', name='peter', age=22, weight=48, hight=165)
node4 = Node('Person','female',name='lisa', age=21, weight=46)
node5 = Node('Person')
关系=Relationship(节点1,关系类型,节点2,属性1=属性值1,属性2=属性值2)关系=Relationship(节点1,关系类型,节点2,属性1=属性值1,属性2=属性值2) 关系=Relationship(节点1,关系类型,节点2,属性1=属性值1,属性2=属性值2)
relation1 = Relationship(node1, 'KNOW', node2)
relation2 = Relationship(node1, 'KNOW', node3, strong=85)
relation3 = Relationship(node1, 'COUPLE', node4, value=90)
relation4 = Relationship(node4, 'MATE', node2, strong=40)
relation5 = Relationship(node2, 'KNOW', node3, strong=60)
graph.create(节点)graph.create(节点) graph.create(节点)
graph.create(node1)
graph.create(node2)
graph.create(node3)
graph.create(node4)
graph.create(node5)
graph.create(关系)graph.create(关系) graph.create(关系)
graph.create(relation1)
graph.create(relation2)
graph.create(relation3)
graph.create(relation4)
graph.create(relation5)
节点[属性名]=属性值graph.push(节点)节点[属性名]=属性值\\ graph.push(节点) 节点[属性名]=属性值graph.push(节点)
node1['hight']=190
node1['age']=26
graph.push(node1)
del节点[属性名]graph.push(节点)del \quad 节点[属性名]\\ graph.push(节点) del节点[属性名]graph.push(节点)
del node1['age']
graph.push(node1)
节点.add_label(标签1)graph.push(node1)节点.remove_label(标签1)graph.push(node1)节点.add\_label(标签1)\\ graph.push(node1)\\ 节点.remove\_label(标签1)\\ graph.push(node1) 节点.add_label(标签1)graph.push(node1)节点.remove_label(标签1)graph.push(node1)
node1.add_label('male')
graph.push(node1)
node3.remove_label('Suspect')
graph.push(node3)
节点.update_labels([标签1,标签2])graph.push(节点)节点.update\_labels( [标签1, 标签2] )\\ graph.push(节点) 节点.update_labels([标签1,标签2])graph.push(节点)
node2.update_labels(['male','Suspect'])
graph.push(node2)
graph.delete(节点)#把关系一同删除graph.delete(节点) \quad\# 把关系一同删除 graph.delete(节点)#把关系一同删除
graph.delete(node5)
关系[属性名]=属性值graph.push(关系)关系[属性名] = 属性值\\ graph.push(关系) 关系[属性名]=属性值graph.push(关系)
relation2['strong']=90
graph.push(relation2)
del关系[属性名]graph.push(关系)del \quad 关系[属性名]\\ graph.push(关系) del关系[属性名]graph.push(关系)
del relation3['value']
graph.push(relation2)
relation=RelationshipMatcher(graph)关系组=relation.match(nodes=[节点1,节点2],r_type=关系类型,limit=None)for关系 in关系组:graph.seperate(关系)relation = RelationshipMatcher(graph)\\ 关系组 = relation.match(nodes=[节点1, 节点2], r\_type=关系类型, limit=None)\\ for\ \ 关系 \ \ in \ \ 关系组:\\ graph.seperate(关系) relation=RelationshipMatcher(graph)关系组=relation.match(nodes=[节点1,节点2],r_type=关系类型,limit=None)for 关系 in 关系组:graph.seperate(关系)
relation_matcher = RelationshipMatcher(graph) # 生成关系匹配器
#;例子1 删除所有couple关系
relations = relation_matcher.match(r_type='COUPLE') # 可迭代对象
for relation in relations:graph.separate(relation)
# 例子2 删除node1和node2的关系
relations = relation_matcher.match([node1,node2]) # 可迭代对象
for relation in relations:graph.separate(relation)
graph.delete(关系)graph.delete(关系) graph.delete(关系)
graph.delete(relation2) # 删除tony和peter关系和节点
# 这个就不示范了
(1) 根据特定属性值查询,结果为字典构成的可迭代:
node_matcher=NodeMatcher(graph)node_matcher.match(节点类型1,节点类型2,属性1=属性值1,属性2=属性值2)node\_matcher = NodeMatcher(graph)\\ node\_matcher.match(节点类型1, 节点类型2, 属性1=属性值1, 属性2=属性值2)\\ node_matcher=NodeMatcher(graph)node_matcher.match(节点类型1,节点类型2,属性1=属性值1,属性2=属性值2)
node_matcher = NodeMatcher(graph) # 节点匹配器
a = node_matcher.match('female',age=21) # 提取满足属性值的节点
(2) 根据复杂规则遍历查找特定条件的节点,结果为字典构成的可迭代:
nodes=node_matcher.match()fornodeinnodes:规则nodes = node\_matcher.match()\\ for\ \ node\ \ in\ \ nodes:\\ 规则 nodes=node_matcher.match()for node in nodes:规则
nodes = node_matcher.match() # 直接提取所有节点
for node in nodes:if node['weight'] < 50:print(node)
根据关系属性特定值匹配,匹配结果为字典构成的可迭代
relation_matcher=RelationshipMatcher(graph)关系=relation_matcher.match(r_type=关系类型,属性1=属性值1)relation\_matcher = RelationshipMatcher(graph)\\ 关系 = relation\_matcher.match(r\_type=关系类型, 属性1=属性值1) relation_matcher=RelationshipMatcher(graph)关系=relation_matcher.match(r_type=关系类型,属性1=属性值1)
relation_matcher = RelationshipMatcher(graph) # 关系匹配器
relations = relation_matcher.match(r_type='KNOW', strong=60) # 提取特别属性的关系
根据复杂规则遍历查找特定条件关系,匹配结果为字典构成的可迭代
relations=relation_matcher.match()forrelationinrelations:规则relations = relation\_matcher.match()\\ for \ \ relation\ \ in\ \ relations:\\ 规则 relations=relation_matcher.match()for relation in relations:规则
relations = relation_matcher.match() # 提取所有关系
for relation in relations:if relation['strong'] > 20:print(relation)
graph.match(nodes=[节点1,节点2],r_type=关系类型,limit=None)graph.match(nodes=[节点1, 节点2], r\_type=关系类型, limit=None) graph.match(nodes=[节点1,节点2],r_type=关系类型,limit=None)
graph.match(nodes=[node1, node3], r_type='KNOW', limit=None)
发表回复