python使用py2neo创建neo4j的节点和关系

 更新时间:2022年02月11日 12:17:00   作者:呆萌的代Ma  
这篇文章主要介绍了python使用py2neo创建neo4j的节点和关系,第一步使用py2neo连接neo4j的方法然后根据dict创建Node,更多相关资料需要的朋友参考下面文章内容

1.核心代码

使用py2neo连接neo4j的方法:

from py2neo import Graph

graph = Graph("http://localhost:7474", auth=("neo4j", "neo4j"))
graph.delete_all()  # 删除已有的所有内容

根据dict创建Node:

from py2neo import Node

node = Node(**{"key":"value"})
graph.create(node)

创建关系:

from py2neo import Relationship

relation = Relationship(node1, relation, node2)
graph.create(relation)

用到的工具函数是:

def create_relation(graph, match_node1: dict, match_node2: dict, relation: str, node1_label=None, node2_label=None):
    """自动创建节点与关系
    :param graph: 图
    :param match_node1: 节点1属性
    :param match_node2: 节点2属性
    :param relation: 关系
    :param node1_label: 节点1的标签
    :param node2_label: 节点2的标签
    """
    from py2neo import Node, Relationship
    from py2neo import NodeMatcher

    node_matcher = NodeMatcher(graph)
    node1 = node_matcher.match(**match_node1).first()
    # 自动创建node
    if not node1:
        if node1_label:
            node1 = Node(node1_label, **match_node1)
        else:
            node1 = Node(**match_node1)
    node2 = node_matcher.match(**match_node2).first()
    if not node2:
        if node2_label:
            node2 = Node(node2_label, **match_node2)
        else:
            node2 = Node(**match_node2)
    # 创建关系
    relation = Relationship(node1, relation, node2)
    graph.create(relation)

2.完整示例代码

def create_relation(graph, match_node1: dict, match_node2: dict, relation: str, node1_label=None, node2_label=None):
    """自动创建节点与关系
    :param graph: 图
    :param match_node1: 节点1属性
    :param match_node2: 节点2属性
    :param relation: 关系
    :param node1_label: 节点1的标签
    :param node2_label: 节点2的标签
    """
    from py2neo import Node, Relationship
    from py2neo import NodeMatcher

    node_matcher = NodeMatcher(graph)
    node1 = node_matcher.match(**match_node1).first()
    # 自动创建node
    if not node1:
        if node1_label:
            node1 = Node(node1_label, **match_node1)
        else:
            node1 = Node(**match_node1)
    node2 = node_matcher.match(**match_node2).first()
    if not node2:
        if node2_label:
            node2 = Node(node2_label, **match_node2)
        else:
            node2 = Node(**match_node2)
    # 创建关系
    relation = Relationship(node1, relation, node2)
    graph.create(relation)


def main():
    from py2neo import Graph

    graph = Graph("http://localhost:7474", auth=("neo4j", "neo4j"))
    graph.delete_all()  # 删除已有的所有内容
    create_relation(graph, {"name": "小a", "age": 12}, {"name": "小b", "age": 22}, "relation1", )
    create_relation(graph, {"name": "小a", "age": 12}, {"name": "小c", "age": 32}, "relation2", "people", "people")
    create_relation(graph, {"name": "小c", "age": 32}, {"name": "小d", "age": 42}, "relation1", "people", "people")


if __name__ == '__main__':
    main()

效果图:

到此这篇关于python使用py2neo创建neo4j的节点和关系的文章就介绍到这了,更多相关python使用py2neo创建neo4j的节点和关系内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Python爬虫爬取博客园问题列表所有的问题

    详解Python爬虫爬取博客园问题列表所有的问题

    这篇文章主要介绍了详解Python爬虫爬取博客园问题列表所有的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python中defaultdict与lambda表达式用法实例小结

    Python中defaultdict与lambda表达式用法实例小结

    这篇文章主要介绍了Python中defaultdict与lambda表达式用法,结合实例形式分析了Python中defaultdict与lambda表达式的功能、使用方法及相关注意事项,需要的朋友可以参考下
    2018-04-04
  • 对Python中plt的画图函数详解

    对Python中plt的画图函数详解

    今天小编就为大家分享一篇对Python中plt的画图函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • 给Python中的MySQLdb模块添加超时功能的教程

    给Python中的MySQLdb模块添加超时功能的教程

    这篇文章主要介绍了给Python中的MySQLdb模块添加超时功能的教程,timeout功能在服务器的运维当中非常有用,需要的朋友可以参考下
    2015-05-05
  • Python中打印出指定格式日期时间的12种方式

    Python中打印出指定格式日期时间的12种方式

    无论是为了数据分析、文件命名还是日志记录,掌握多种日期格式化的方法都是很有帮助的,下面我们来探索一下如何以各种不同的方式使用Python打印出指定格式的日期吧
    2025-02-02
  • 利用python添加表格到PowerPoint中的代码示例

    利用python添加表格到PowerPoint中的代码示例

    有效的信息传达是演示文稿中的重点,而PowerPoint演示文稿作为最广泛使用的演示工具之一,提供了丰富的功能来帮助演讲者实现这一目标,本文将介绍如何利用Python来添加表格到PowerPoint演示文稿中,需要的朋友可以参考下
    2024-08-08
  • PyTorch: 梯度下降及反向传播的实例详解

    PyTorch: 梯度下降及反向传播的实例详解

    今天小编就为大家分享一篇PyTorch: 梯度下降及反向传播的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python使用Rich实现美化终端显示效果

    Python使用Rich实现美化终端显示效果

    Rich库的功能就像它的名字一样,使Python编程更加丰富(rich),用来帮助开发者在控制台(命令行)输出中创建丰富、多彩和具有格式化的文本,下面我们就来了解下它的具体使用吧
    2024-02-02
  • pandas将list数据拆分成行或列的实现

    pandas将list数据拆分成行或列的实现

    这篇文章主要介绍了pandas将list数据拆分成行或列的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Django model update的多种用法介绍

    Django model update的多种用法介绍

    Django开发过程中对表(model)的增删改查是最常用的功能之一,本文介绍笔者在使用model update过程中遇到的那些事
    2019-07-07

最新评论