如何使用py2neo优雅的进行增删改查

本文详细介绍了如何使用Python库py2neo进行Neo4j数据库的增删改查操作。首先,通过提供URL、用户名和密码连接到Neo4j数据库。接着,展示了如何无冲突地创建节点和关系,以及查询特定节点和关系。在修改部分,说明了更新节点属性的方法,并演示了删除节点和关系的步骤。整个过程简洁明了,适合初学者掌握Neo4j的Python操作。
摘要由CSDN通过智能技术生成

1.py2neo介绍

py2neo是一个客户端库和工具包,用于从Python应用程序和命令行中使用Neo4j 。该库支持Bolt和HTTP协议,并提供高级 API、OGM(Object Graph Mapping)、管理工具、交互式控制台、Cypher 词法分析器以及许多功能。

使用的py2neo版本为2021.2.3,neo4j版本为社区版4.3.7,jdk版本为openjdk11+28

2.CRUD

2.1 连接数据库

社区版Neo4j默认构建了一个名为neo4j的数据库,本篇都以默认的neo4j数据库为例。

from py2neo import Graph
# 以笔者为例 url为 http://127.0.0.1:7474, username为 neo4j, password为 neo4j
# 换成自己的就可以了
graph = Graph(url, auth=(username, password))

2.2 增加

2.2.1 无需考虑冲突

不用考虑冲突是指新增加的实体、关系或属性不会与当前存在于数据库中的内容产生联系。比如往新创建的数据库添加内容;往数据库中添加以前从未有过的内容。但为了保险起见,一般还是需要考虑冲突。

# 当不用考虑冲突时,可以采取直接添加的方式
from py2neo import Node, Relationship

# 添加 有多个属性的节点
zhao_node = Node("Person", name="zhao")
zhao_node["birthday"] = "2000.01.01"
zhao_node["height"] = "188cm"
graph.create(zhao_node)

qian_node = Node("Person", name="qian")
qian_node["birthday"] = "2001.01.01"
qian_node["height"] = "165cm"
graph.create(qian_node)

# 添加一个有多属性节点的边
zhao_qian_relation = Relationship(zhao_node, "COUPLE", qian_node)
zhao_qian_relation["married_time"] =  "2022.02.02"
graph.create(zhao_qian_relation)

# 新建一条完整的实体——关系——实体简便方法:
# 参考上面的情况,不用使用create方法单独保存两个实体
# 只用 保存zhao_qian_relation这个关系,关系两侧的节点也会自动保存

2.3 查询

py2neo封装了节点、关系匹配器,不用写Cypher既可查询出结果。

from py2neo import NodeMatcher, RelationshipMatch
# 按条件查询节点
nodes = NodeMatcher(graph)
zhao_node = nodes.match("Person", name="zhao").all()

# 按条件查询关系
zhao_relation = RelationshipMatch(graph, nodes=zhao_node).first()

2.4 修改

修改需要先查到节点或关系、然后赋值。当没有查到直接赋值时,Neo4j会直接新增一个内容一样的实体或关系。

nodes = NodeMatcher(graph)
zhao_node = nodes.match("Person", name="zhao").first()
zhao_node["birthday"] = "2020.02.02"
graph.push(zhao_node)

2.5 删除

  • 删除当前数据库中的所有节点、属性和关系
    graph.delete_all()
    
  • 删除指定节点、属性与关系
    # 删除前面查找出来的zhao_relation, 只删除括号里的关系或节点
    graph.separate(zhao_relation)
    # 删除前面查找出来的zhao_relation直接相关的节点与关系
    graph.delete(zhao_node)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值