官网
pip3 install py2neo
import 库
from py2neo import Graph,Node,Relationship
Node 和Relationship
from py2neo import Node, Relationship
a = Node('Person', name='Alice')
b = Node('Person', name='Bob')
r = Relationship(a, 'KNOWS', b)
print(a, b, r)
得到
(alice:Person {name:"Alice"}) (bob:Person {name:"Bob"}) (alice)-[:KNOWS]->(bob)
节点的建立要用到py2neo.Node,建立节点的时候要定义它的节点类型(label)以及一个基本属性(property,包括property_key和property_value) 可以用多个property_value
节点间的关系(Relationship)是有向的,所以在建立关系的时候,必须定义一个起始节点和一个结束节点。值得注意的是,起始节点可以和结束节点是同一个点,这时候的关系就是这个点指向它自己。
对node和relationship进行赋值
a['age'] = 20
b['age'] = 21
r['time'] = '2017/08/31'
print(a, b, r)
就像字典一样的操作
结果
(alice:Person {age:20,name:"Alice"}) (bob:Person {age:21,name:"Bob"}) (alice)-[:KNOWS {time:"2017/08/31"}]->(bob)
使用setdefault() 方法赋值默认属性
a.setdefault('location', '北京')
print(a)
(alice:Person {age:20,location:"北京",name:"Alice"})
赋值了location属性后,就会覆盖默认属性
a['location'] = '上海'
a.setdefault('location', '北京')
print(a)
(alice:Person {age:20,location:"上海",name:"Alice"})
利用update()方法进行属性批量更新
data = {
'name': 'Amy',
'age': 21
}
a.update(data)
print(a)
(alice:Person {age:21,location:"上海",name:"Amy"})
Graph
首先需要初始化graph用来连接neo4j
g = Graph(
host="", # neo4j 搭载服务器的ip地址,ifconfig可获取到
http_port=7474, # neo4j 服务器监听的端口号
user="", # 数据库user name,如果没有更改过,应该是neo4j
password="")
连接好了之后通过这个http://localhost:7474
进入浏览器来访问
用create() 来创立图
test_node_1 = Node(label = "Person",name = "test_node_1")
test_node_2 = Node(label = "Person",name = "test_node_2")
test_graph.create(test_node_1)
test_graph.create(test_node_2)
同理Relationship也是通过create()函数来建立
node_1_call_node_2 = Relationship(test_node_1,'CALL',test_node_2)
node_1_call_node_2['count'] = 1
node_2_call_node_1 = Relationship(test_node_2,'CALL',test_node_1)
node_2_call_node_1['count'] = 2
test_graph.create(node_1_call_node_2)
test_graph.create(node_2_call_node_1)
如以上代码,分别建立了test_node_1指向test_node_2和test_node_2指向test_node_1两条关系,关系的类型为"CALL",两条关系都有属性count,且值为1。
节点/关系的属性赋值以及属性值的更新
node_1_call_node_2['count']+=1
test_graph.push(node_1_call_node_2)
更新属性值就使用push函数来进行更新即可。
通过属性值来查找节点和关系
通过find和find_one函数,可以根据类型和属性、属性值来查找节点和关系。
Neo4j的Cypher语句
这篇blog 写的很详细
参考
https://www.jianshu.com/p/a2497a33390f
https://blog.csdn.net/qq_19707521/article/details/80060675