neo4j学习

本文详细介绍了Neo4j图数据库的基本操作,包括如何删除和创建节点、设置节点属性、建立关系及关系属性。同时,展示了如何使用Python的py2neo库进行连接、创建节点和关系、更新属性、查找节点以及删除操作。内容涵盖了图数据库的基础操作和Python集成的关键步骤。
摘要由CSDN通过智能技术生成

一、neo4j语法操作

1、首先,我们删除数据库中以往的图,(确保一个空白的环境进行操作):

MATCH (n) DETACH DELETE n

MATCH是匹配操作,而小括号()代表一个节点node(可理解为括号类似一个圆形),括号里面的n为标识符。

2、我们创建一个课程节点:

CREATE (n:Class {name:'大学英语Ⅱ'}) RETURN n

CREATE是创建操作,Class是标签,代表节点的类型。花括号{}代表节点的属性,属性类似Python的字典。这条语句的含义就是创建一个标签为Class的节点,该节点具有一个name属性,属性值是大学英语Ⅱ。

在这里插入图片描述

3、我们继续来创建更多的课程节点,并分别命名:

CREATE (n1:Class {name:'大学英语Ⅱ'}) 
CREATE (n2:Class {name:'大学英语Ⅲ'}) 
CREATE (n3:Class {name:'大学英语Ⅳ'}) 
RETURN n1,n2,n3

在这里插入图片描述

4、接下来创建专业节点

CREATE (m1:profession {name:'计算机专业'})
CREATE (m2:profession {name:'软件工程'})
CREATE (m3:profession {name:'大数据'})
CREATE (m4:profession {name:'信管'})
RETURN m1,m2,m3,m4

在这里插入图片描述

5、接下来创建关系

CREATE (n1:class {name: "大英Ⅱ"}) 
CREATE (n2:class {name: "大英Ⅲ"}) 
CREATE (n1)-[r:BASIC]->(n2)
RETURN n1, n2

在这里插入图片描述

6、关系也可以增加属性

CREATE (n1:class {name: "大英Ⅱ"}) 
CREATE (n2:class {name: "大英Ⅲ"}) 
CREATE (n1)-[r:BASIC {since:2021}]->(n2)
RETURN n1, n2

7、接下来增加更多的关系

CREATE (n1:class {name: "大英Ⅱ"}) 
CREATE (n2:class {name: "大英Ⅲ"}) 
CREATE (n3:Class {name:'大英Ⅳ'}) 
CREATE (n1)-[r1:BASIC]->(n2)
CREATE (n2)-[r2:BASIC]->(n3)
RETURN n1, n2,n3

也可以在创建节点的时候建立关系,如例子:CREATE (a:Person {name:'Todd'})-[r:FRIENDS]->(b:Person {name:'Carlos'})

在这里插入图片描述

8、然后,我们需要建立不同类型节点之间的关系-课程和专业的关系

CREATE (n1:class {name: "大英Ⅱ"}) 
CREATE (n2:class {name: "大英Ⅲ"}) 
CREATE (n3:Class {name:'大英Ⅳ'}) 
CREATE (m1:profession {name:'计算机专业'})
CREATE (m2:profession {name:'软件工程'})
CREATE (m3:profession {name:'大数据'})
CREATE (m4:profession {name:'信管'})
CREATE (n1)-[r1:BASIC]->(n2)
CREATE (n2)-[r2:BASIC]->(n3)
CREATE (m1)-[r3:REQUIRE]->(n1)
CREATE (m2)-[r4:REQUIRE]->(n1)
CREATE (m3)-[r5:REQUIRE]->(n1)
CREATE (m4)-[r6:REQUIRE]->(n1)
RETURN n1, n2,n3,m1,m2,m3,m4

在这里插入图片描述

二、python操作neo4j

二:python操作neo4j的实现

python中neo4j的操作可以利用驱动包或者py2neo包,

我采用py2neo第三方包实现以下简单功能,先建立一个neo4j的链接

对于neo4j的安装其实比较简单,这里就跳过

def__init__(self):

self.conn = Graph("http://localhost:7474",username="11111",password="11111")

节点和关系的创建

a = Node(label, **doc1)

b = Node(label, **doc2)

r2 = Relationship(b, ship, a)

self.conn.merge(r2,label=label)

更新节点属性

node.update(doc)

通过关系查找相关联的关系节点

selector = NodeSelector(self.conn)

query = '_.age=22'

persons = selector.select(label).where(query).order_by('_.' + order)

添加节点

obj = self.get(label, field, value)

tmp_obj = label()

tmp_obj.setAll(doc=doc)

obj.knows.add(tmp_obj)

print(list(obj.knows))

self.conn.push(obj)

删除节点,这里有坑,官方文档说删除节点必须先删除关系。当节点大于2时,比如a->b->c 这时官方文档中的栗子有报错。因此自己现在用这种方式删除

obj = self.get(label, src_field, src_value)

tar = self.get(label, desc_field, desc_value)

obj.knows.remove(tar)

self.conn.push(obj)

self.conn.delete(tar)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值