时间:2022-10-17 11:20:35 | 栏目:Python代码 | 点击:次
使用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)
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()
效果图: