py2neo的neo4j数据库增删改查节点node、关系relationship、属性property操作
py2neo的neo4j数据库增删改查节点node、关系relationship、属性property操作
py2neo版本为4.3.0
设置节点和关系:
# neo4j默认密码是neo4j,如有修改,需要修改第二个‘neo4j’。graph = Graph("http://localhost:7474", auth=("neo4j", "neo4j"))a = Node('Man', name='Alice4',desc='2021')b = Node('Man', name='Bob4',desc='2022')c = Node('Man', name='Bob4',desc='2023')r = Relationship(a, 'KNOWS', b)print(a, b, r)
增添:
# 增加属性# 节点增加属性a['age'] = 20a['location'] = '上海'b['age'] = 21c['age'] = 22# 关系增加属性r['time'] = '2017/08/31'# 赋值默认属性a.setdefault('location','北京')r.setdefault('location','归属地')# 属性批量更新data = {'name': 'Amy','age': 23}a.update(data)# 添加关系relationshipgraph.create(r)y=a|b|rgraph.create(y)# 添加节点Nodegraph.create(c)print(a, b, r)# 添加关系graph.run("match (p:Post),(u:User) \where p.OwnerUserId = u.Id \create (u)-[:Own]->(p)")# 批量添加节点,需修改对应内容# tx = graph.begin()# nodes = []# for line in lineLists:# oneNode = Node()# # 这里的循环,一般是把文件的数据存入node中# nodes.append(oneNode)# nodes = neo.Subgraph(nodes)# tx.create(nodes)# tx.commit()
查询:
print("***查询***")# 查询节点和关系s = r+Relationship(b,'LIKE',c)for item in walk(s):print(item)# 查节点print('***查点***')data = graph.run('MATCH (p:Man) return p').data()print(data)l=list(graph.nodes.match('Man',name="Amy" ))print(l)# 查关系,找到所有关系print("***查关系***")r=list(graph.match(nodes=None, r_type=None, limit=None))# 查找一条关系relationship = graph.match_one(r_type = 'KNOWS')print(r)# 查询关系的条数print(len(r))# py2neo提供了专门的查询模块 NodeMatcher节点 RelationshipMatcher关系# 测试NodeMatcherprint("***NodeMatcher***")nodematcher=NodeMatcher(graph)# 返回列表select_nodes=nodematcher.match('Man')print(list(select_nodes))# 返回第一个节点select_nodes=nodematcher.match('Man').first()print(list(select_nodes))# 返回年龄为21的label为Man的所有节点select_nodes=nodematcher.match('Man').where(age=21)print(list(select_nodes))# 测试RelationshipMatcherprint("***relationshipmatcher***")relmatcher=RelationshipMatcher(graph)# 返回关系属性location为’归属的‘、type为KNOWS的所有关系res=relmatcher.match(r_type='KNOWS',location = '归属地')print(list(res))# 返回与b关系为KNOWS的所有关系res1=relmatcher.match({b},'KNOWS').limit(None)print(list(res1))# 等同于graph.match(nodes=b, r_type=KNOWS, limit=None)res2=graph.match(nodes={b}, r_type='KNOWS', limit=None)print(list(res2))
修改:
print("***修改***")# 修改节点Nodesalter_data=graph.begin()nodes_list=list(graph.nodes.match('Man').where(age=21))for node in nodes_list:node['desc']='2021.09.15'# 删除节点的属性del node['age']sub=Subgraph(nodes=nodes_list)# 修改关系rels_list=list(graph.match(nodes=None,r_type="KNOWS",limit=None))for rel in rels_list:rel['time']='2021.09.15'del rel['time']sub2=Subgraph(relationships=rels_list)alter_data.push(sub)alter_data.push(sub2)alter_data.commit()
删除:
#在删除Node时必须先删除其对应的Relationship,否则无法删除Nodeprint("***删除***")# 删除节点graph.delete(a)# 删除标签为phone的所有节点和关系graph.run('match (n:Man) detach delete n')# 删除一个节点(根据id)graph.run('match (r) where id(r) = 63 delete r')# 删除一个节点(根据属性name)graph.run('match (n:Man{name:\'Bob4\'}) delete n')# 删除一个节点及与之相连的关系graph.run('match (n:Man{name:\'Bob4\'}) detach delete n')# 删除关系# 删除type为KNOWS的所有关系graph.run('match ()-[r:KNOWS]->() delete r;')# 删除一条type为KNOWS的关系relationship = graph.match_one(r_type = 'KNOWS')graph.delete(relationship)# 删除b节点的type为KNOWS的所有关系relmatcher=RelationshipMatcher(graph)res=relmatcher.match({b},'KNOWS')graph.delete(res)# 删除标签为Man的节点到标签为Man的节点的所有type为KNOWS的关系graph.run('match (:Man)-[r:KNOWS]->(:Man) delete r;')# 可在neo4j上显示关系数:'match (:Man)-[:KNOWS]->(:Man) return count(*);'# 删除属性# 专门删除node的某个property,需要配合修改节点操作# del a['age']# 删除关系的某个property,需要配合修改关系操作# del r['LIKES']# 删除所有graph.delete_all()# 等同graph.run('match (n) detach delete n')
参考:
https://www.jianshu.com/p/febe8a248582
等等,搜索资料时没有记录望谅解。
py2neo的neo4j数据库增删改查节点node、关系relationship、属性property操作相关推荐
- 【小知识点】MySql数据库增删改查常用语句命令
目录 一.MySQL简介: 二.增删改查语句 三.表操作 四.实例 1.准备表 2.插入数据 3.修改表数据 4.删除表数据 5.查询表数据 五.常见的MySQL语句命令 六.常见MySQL字段含义 ...
- 常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现
常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现 以下方法全部亲测可用 //测试查找全部@Testpublic void testSelectAll(){List<U ...
- Mysql (一)Mysql 数据库增删改查
mysql数据库增删改查增:create database DBname charset gbk; 删:drop database DBname; 改:alter database DBname ch ...
- sql增删改查_快速搞定数据库增删改查|附思维导图
数据库学习,增删改查一直是测试工程师面试笔试的必考知识点,对于常用sql语法我们一定要牢记于心,尤其是各种查询的用法,在面试的时候,一个小小的知识点,面试官都可以推断出求职者的基础是否扎实. 下面是关 ...
- Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作
此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面 ...
- php+mysql+into_PHP+Mysql 如何实现数据库增删改查
PHP+Mysql实现数据库增删改查的方法:1.创建入口文件[index.html]连接数据库.查询数据:2.点击增加按钮,通过[addnews.html]添加数据:3.点击删除按钮,通过服务端文件[ ...
- Java连接Mysql数据库增删改查实现
Java连接Mysql数据库增删改查实现 时间比较赶,我这里只实现查询,有时间再添加另外两个 难度 : ⭐⭐⭐(全星5颗星的情况下) 新建一个动态的网站工程, 把jar包全部复制进去,主要要那个mys ...
- flask对mysql数据库增删改查_Flask学习(三) - Flask-SQLAlchemy对数据库增删改查
Flask-SQLAlchemy对数据库增删改查 安装 pip install flask-sqlalchemy 具体不多说了,主要是对数据库进行简单的增删改查,上代码,看注释 @app.route( ...
- mysql 中caption_Django-Model操作数据库(增删改查、连表结构)(示例代码)
Django-Model操作数据库(增删改查.连表结构) 一.数据库操作 1.创建model表 基本结构 from django.db importmodelsclassuserinfo(models ...
最新文章
- HTML5 drag drop 拖拽与拖放简介
- 解决hibernate对Sql Server分页慢的问题
- [Spring cloud 一步步实现广告系统] 19. 监控Hystrix Dashboard
- TomcatNginx源码笔记分析
- 关于基本工作素养在职场当中的重要性
- 德国Java工程师_1886年,德国工程师。
- Tab表格thead头部固定(demo)
- em在聊天中是什么意思_EM是什么意思?有几种解释?
- 在VirtualBox上安装deepin
- redhat 7中DNS 服务器配置与测试
- 中国音乐史记•黄家驹列传
- 第三届中国移动开发者大会(MDCON.2015)
- 同样是技术出身,深夜看完张一鸣200条微博,让我越想越后怕
- 计算机中的数学【阿贝尔-鲁菲尼定理】五次方程的根
- DHCP 中继Snooping解释以及配置
- linux 下 QT 讯飞语音合成
- TI毫米波雷达AWR1642测试
- VMware安装win10系统的心路历程
- glove安装,以及安装中个各种坑
- 图解 Word2Vec