You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用YAML在Apache Age中为两个Python函数创建共用Person节点

用YAML配置在Apache Age的Python函数间共享并更新Person节点

1. 定义YAML通用配置文件

用顶层键common_person存放共用Person节点的所有属性,后续新增属性直接在该节点下添加即可:

common_person:
  name: John Doe
  age: 30
  email: john.doe@example.com

2. 将YAML文件加载为Python字典的最佳方式

使用PyYAML库是标准且安全的方案:

  • 先安装依赖:
pip install pyyaml
  • 编写加载函数,采用yaml.safe_load避免执行恶意代码:
import yaml

def load_common_config(config_file_path):
    with open(config_file_path, 'r', encoding='utf-8') as config_file:
        return yaml.safe_load(config_file)

3. 利用字典创建/更新Apache Age的Person节点

结合Cypher的MERGE和SET语句,实现跨函数的节点共享与更新:

  • MERGE自动判断节点是否存在:已有name匹配的Person节点则直接匹配,不存在则创建新节点
  • SET p += $props批量将字典中的所有属性合并到节点上,无需逐个编写属性赋值

完整示例代码:

from age import Graph
import yaml

def load_common_config(config_file_path):
    with open(config_file_path, 'r', encoding='utf-8') as config_file:
        return yaml.safe_load(config_file)

def sync_common_person_node(common_config):
    person_props = common_config['common_person']
    # 初始化Age图连接
    graph = Graph("path/to/database")
    # 事务中执行Cypher语句
    with graph.transaction() as tx:
        tx.query(
            """
            MERGE (p:Person {name: $name})
            SET p += $props
            """,
            name=person_props['name'],
            props=person_props
        )

# 第一个业务函数
def process_user_data():
    config = load_common_config('common_person_config.yaml')
    sync_common_person_node(config)
    # 此处添加你的业务逻辑

# 第二个业务函数
def generate_user_report():
    config = load_common_config('common_person_config.yaml')
    sync_common_person_node(config)
    # 此处添加你的业务逻辑

关键说明

  • 两个函数加载同一个YAML配置,通过name属性匹配确保操作的是同一个Person节点
  • 修改节点属性只需更新YAML文件,无需修改Python代码中的Cypher语句
  • 事务操作保证节点更新的原子性,避免数据不一致

内容的提问来源于stack exchange,提问作者AmrShams07

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:43:11