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操作相关推荐

  1. 【小知识点】MySql数据库增删改查常用语句命令

    目录 一.MySQL简介: 二.增删改查语句 三.表操作 四.实例 1.准备表 2.插入数据 3.修改表数据 4.删除表数据 5.查询表数据 五.常见的MySQL语句命令 六.常见MySQL字段含义  ...

  2. 常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现

    常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现 以下方法全部亲测可用 //测试查找全部@Testpublic void testSelectAll(){List<U ...

  3. Mysql (一)Mysql 数据库增删改查

    mysql数据库增删改查增:create database DBname charset gbk; 删:drop database DBname; 改:alter database DBname ch ...

  4. sql增删改查_快速搞定数据库增删改查|附思维导图

    数据库学习,增删改查一直是测试工程师面试笔试的必考知识点,对于常用sql语法我们一定要牢记于心,尤其是各种查询的用法,在面试的时候,一个小小的知识点,面试官都可以推断出求职者的基础是否扎实. 下面是关 ...

  5. Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作

    此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面 ...

  6. php+mysql+into_PHP+Mysql 如何实现数据库增删改查

    PHP+Mysql实现数据库增删改查的方法:1.创建入口文件[index.html]连接数据库.查询数据:2.点击增加按钮,通过[addnews.html]添加数据:3.点击删除按钮,通过服务端文件[ ...

  7. Java连接Mysql数据库增删改查实现

    Java连接Mysql数据库增删改查实现 时间比较赶,我这里只实现查询,有时间再添加另外两个 难度 : ⭐⭐⭐(全星5颗星的情况下) 新建一个动态的网站工程, 把jar包全部复制进去,主要要那个mys ...

  8. flask对mysql数据库增删改查_Flask学习(三) - Flask-SQLAlchemy对数据库增删改查

    Flask-SQLAlchemy对数据库增删改查 安装 pip install flask-sqlalchemy 具体不多说了,主要是对数据库进行简单的增删改查,上代码,看注释 @app.route( ...

  9. mysql 中caption_Django-Model操作数据库(增删改查、连表结构)(示例代码)

    Django-Model操作数据库(增删改查.连表结构) 一.数据库操作 1.创建model表 基本结构 from django.db importmodelsclassuserinfo(models ...

最新文章

  1. HTML5 drag drop 拖拽与拖放简介
  2. 解决hibernate对Sql Server分页慢的问题
  3. [Spring cloud 一步步实现广告系统] 19. 监控Hystrix Dashboard
  4. TomcatNginx源码笔记分析
  5. 关于基本工作素养在职场当中的重要性
  6. 德国Java工程师_1886年,德国工程师。
  7. Tab表格thead头部固定(demo)
  8. em在聊天中是什么意思_EM是什么意思?有几种解释?
  9. 在VirtualBox上安装deepin
  10. redhat 7中DNS 服务器配置与测试
  11. 中国音乐史记•黄家驹列传
  12. 第三届中国移动开发者大会(MDCON.2015)
  13. 同样是技术出身,深夜看完张一鸣200条微博,让我越想越后怕
  14. 计算机中的数学【阿贝尔-鲁菲尼定理】五次方程的根
  15. DHCP 中继Snooping解释以及配置
  16. linux 下 QT 讯飞语音合成
  17. TI毫米波雷达AWR1642测试
  18. VMware安装win10系统的心路历程
  19. glove安装,以及安装中个各种坑
  20. 图解 Word2Vec

热门文章

  1. 基于51单片机的语音控制GSM短信报警密码锁proteus仿真原理图PCB
  2. html垂直居中vertical,利用vertical-align:middle垂直居中
  3. 解决mysql远程连接等待时间长的问题
  4. C# windows服务部署到服务器上指令
  5. 【Stephen Boyd】应用线性代数导论课件
  6. 栽培员工,让他强大到可以离开!
  7. 无人驾驶运动学模型——线性时变模型预测控制的思路推演过程
  8. 那位把每天当做试用期的女孩,升职为总裁助理了
  9. Oracle中的触发器(trigger)
  10. 理科生应该这样写情书