# 图数据库核心功能模块 本模块提供了与Neo4j图数据库交互的核心功能,包括连接、查询和数据操作。 ## 功能概述 图数据库核心模块是整个系统的基础设施之一,负责处理所有与图数据库相关的底层操作。它提供了一组工具函数,用于执行常见的图数据库操作,如节点和关系的创建、查询和子图提取等。 ## 主要功能 ### 1. 数据库连接 (connect_graph) 提供了与Neo4j图数据库建立连接的功能,支持配置化连接参数。 ### 2. 节点操作 (create_or_get_node) 创建具有给定标签和属性的新节点或获取现有节点,支持节点属性的更新。如果节点已存在(通过ID匹配),则更新节点属性。 ### 3. 关系操作 (create_relationship) 在两个节点之间创建关系,支持定义关系类型和属性。 ### 4. 子图提取 (get_subgraph) 根据指定的起始节点、关系类型和深度,提取子图数据。返回的数据包括节点和关系的集合,可直接用于前端图形可视化。 ### 5. Cypher查询执行 (execute_cypher_query) 执行自定义的Cypher查询,支持参数化查询,并处理查询结果为标准格式。可处理各种类型的查询结果,包括节点、关系和路径。 ## 技术实现 本模块主要基于py2neo和neo4j-python-driver,实现了对Neo4j图数据库的访问。主要技术点包括: - 数据库连接与会话管理 - Cypher查询构建与执行 - 查询结果序列化与转换 - 异常处理与日志记录 ## 使用方法 ```python from app.core.graph import connect_graph, create_or_get_node, execute_cypher_query # 创建节点 node_id = create_or_get_node('Person', name='张三', age=30) # 执行查询 cypher = "MATCH (n:Person) WHERE n.name = $name RETURN n" results = execute_cypher_query(cypher, {'name': '张三'}) # 获取子图 from app.core.graph import get_subgraph graph_data = get_subgraph([node_id], ['KNOWS', 'WORKS_WITH'], max_depth=2) ``` ## 依赖项 - neo4j: 图数据库核心驱动 - Config: 系统配置模块,提供数据库连接参数