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

如何在Django REST Framework中配置ArangoDB实现CRUD操作

Django REST Framework 集成 ArangoDB 配置与CRUD实现指南

1. 前置依赖安装

先安装所需的基础包:

  • Django 与 DRF 基础环境,以及 Python 官方 ArangoDB 驱动,执行命令:
    pip install django djangorestframework python-arango
    *注意:安装前请确保本地已经完成 ArangoDB 服务端的安装与启动,默认服务端口为 8529。

2. Django 项目配置

Django 默认的关系型 ORM 不支持直接对接 ArangoDB,推荐保留 Django 默认数据库存储框架自带元数据(认证、会话、后台配置等),单独初始化 ArangoDB 客户端处理业务数据,配置方式如下:

  1. 在项目 settings.py 文件中新增 ArangoDB 连接配置:
ARANGO_CONFIG = {
    "host": "127.0.0.1",
    "port": 8529,
    "username": "root",
    "password": "你的ArangoDB登录密码",
    "database": "自定义业务数据库名称"
}
  1. 封装全局 ArangoDB 客户端,可在项目 utils 目录下新建 arango_client.py 文件,写入如下内容:
from arango import ArangoClient
from django.conf import settings

# 初始化客户端
client = ArangoClient(hosts=f"http://{settings.ARANGO_CONFIG['host']}:{settings.ARANGO_CONFIG['port']}")
# 连接数据库
db = client.db(
    settings.ARANGO_CONFIG['database'],
    username=settings.ARANGO_CONFIG['username'],
    password=settings.ARANGO_CONFIG['password']
)

# 快捷获取集合的方法
def get_collection(collection_name):
    if not db.has_collection(collection_name):
        db.create_collection(collection_name)
    return db.collection(collection_name)

3. 基础CRUD操作示例

直接调用封装好的客户端即可完成数据操作:

  • 新增数据
from utils.arango_client import get_collection
user_col = get_collection("users")
# 插入单条文档
new_user = user_col.insert({"username": "test", "age": 25})
  • 查询数据
# 按主键查询
user = user_col.get(new_user["_key"])
# 条件查询(AQL语句查询)
cursor = db.aql.execute("FOR u IN users FILTER u.age > 20 RETURN u")
user_list = [doc for doc in cursor]
  • 更新数据
# 更新字段
user_col.update({"_key": new_user["_key"], "age": 26})
  • 删除数据
user_col.delete(new_user["_key"])

4. DRF 适配方法

你可以直接使用 DRF 普通序列化器做参数校验和数据返回,无需使用 ModelSerializer:

# 序列化器示例
from rest_framework import serializers
class UserSerializer(serializers.Serializer):
    _key = serializers.CharField(read_only=True)
    username = serializers.CharField(max_length=32)
    age = serializers.IntegerField(min_value=0)

# 视图示例
from rest_framework.views import APIView
from rest_framework.response import Response
from utils.arango_client import get_collection

class UserView(APIView):
    def get(self, request):
        user_col = get_collection("users")
        users = [doc for doc in user_col.all()]
        ser = UserSerializer(users, many=True)
        return Response(ser.data)
    
    def post(self, request):
        ser = UserSerializer(data=request.data)
        ser.is_valid(raise_exception=True)
        user_col = get_collection("users")
        res = user_col.insert(ser.validated_data)
        return Response({"_key": res["_key"]}, status=201)

注意事项

  • ArangoDB 文档自带三个系统字段 _key、_id、_rev,序列化时可根据业务需要保留或过滤
  • 事务操作可直接使用 python-arango 提供的事务接口,无需适配 Django 自带事务机制
  • 如需更贴近 Django 风格的 ORM 操作,可自行封装对应模型层,简化重复的CRUD操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:51:02