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

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

    • 1.py2neo介绍
    • 2.CRUD
      • 2.1 连接数据库
      • 2.2 增加
        • 2.2.1 无需考虑冲突
      • 2.3 查询
      • 2.4 修改
      • 2.5 删除

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)
    

你可能感兴趣的:(知识图谱,知识图谱,数据库,人工智能)