从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
相关产品推荐
相关产品推荐

