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

从arango-orm迁移至Pydantic:集合/图/边/关系类编写指导请求

从arango-orm迁移到Pydantic的类实现指南

1. Collection类(文档模型)

用Pydantic的BaseModel定义,同时兼容ArangoDB的系统字段(_id、_key、_rev):

from pydantic import BaseModel, Field
from typing import Optional

class User(BaseModel):
    _key: str = Field(..., description="文档唯一键")
    _id: Optional[str] = Field(None, description="格式为 {collection}/{_key} 的完整文档ID")
    _rev: Optional[str] = Field(None, description="文档版本号")
    name: str
    email: str
    age: Optional[int] = None

    class Config:
        arbitrary_types_allowed = True

系统字段可选,插入文档时_key需手动指定或由ArangoDB自动生成,查询返回时会自动填充_id和_rev。

2. Edge类(边模型)

边模型需包含_from和_to字段,对应关联的两个节点ID:

class FollowEdge(BaseModel):
    _key: str
    _id: Optional[str] = None
    _rev: Optional[str] = None
    _from: str = Field(..., description="起始节点ID,如 users/user1")
    _to: str = Field(..., description="目标节点ID,如 users/user2")
    follow_since: str  # 示例:ISO格式日期字符串

    class Config:
        arbitrary_types_allowed = True

3. Graph与关系的实现

Pydantic本身不提供Graph类,需结合ArangoDB官方驱动python-arango管理图结构,用Pydantic模型做数据校验:

from arango import ArangoClient

# 初始化客户端与数据库
client = ArangoClient(hosts="http://localhost:8529")
db = client.db("my_db", username="root", password="your_pwd")

# 创建/获取图
social_graph = db.create_graph("social_graph") if not db.has_graph("social_graph") else db.graph("social_graph")

# 绑定顶点集合(对应Collection模型)
users_col = social_graph.create_vertex_collection("users") if not social_graph.has_vertex_collection("users") else social_graph.vertex_collection("users")

# 绑定边集合(对应Edge模型)
if not social_graph.has_edge_definition("follows"):
    follows_edge_def = social_graph.create_edge_definition(
        edge_collection="follows",
        from_vertex_collections=["users"],
        to_vertex_collections=["users"]
    )
else:
    follows_edge_def = social_graph.edge_definition("follows")

# 用模型校验并插入数据
def add_user(user_data: dict) -> User:
    user = User(**user_data)
    users_col.insert(user.dict(exclude_none=True))
    return user

def add_follow(follow_data: dict) -> FollowEdge:
    follow = FollowEdge(**follow_data)
    follows_edge_def.insert(follow.dict(exclude_none=True))
    return follow

解决arangodantic安装错误

从错误提示来看,核心原因是Python版本或依赖版本不兼容,可按以下步骤排查:

  • 升级pip到最新版:pip install --upgrade pip
  • 指定兼容版本安装:pip install arangodantic==0.8.0(该版本适配多数Python 3.8+环境)
  • 检查Python版本:确保使用Python 3.8及以上版本
  • 用虚拟环境隔离依赖:
python -m venv arango_env
# Windows激活环境
arango_env\Scripts\activate
# Linux/macOS激活环境
source arango_env/bin/activate
pip install arangodantic

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:45:56