首頁 > 軟體

python使用py2neo建立neo4j的節點和關係

2022-02-11 16:01:18

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的節點和關係內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com