neo4j语法初学

官网

Py2neo v4 Handbook

github

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值