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

如何使用Django与Neo4j数据库开发GraphQL API?

Graphene-Django + Neo4j 开发 GraphQL API 实现流程

前置准备

提前安装本地Neo4j数据库并启动服务,记录好你的数据库访问账号密码。

实现步骤

  • 安装依赖包
    执行命令安装所有需要的组件:
    pip install django graphene-django neomodel django-neomodel
  • 配置Django项目
    新建Django项目和应用后,在settings.py中新增如下配置:
    1. 注册应用:
    INSTALLED_APPS = [
        # 你的原有应用
        'graphene_django',
        'django_neomodel'
    ]
    
    1. 配置Neo4j连接:
    NEOMODEL_NEO4J_BOLT_URL = 'bolt://<你的Neo4j账号>:<你的Neo4j密码>@localhost:7687'
    
    1. 配置Graphene:
    GRAPHENE = {
        'SCHEMA': '<你的项目名称>.schema.schema'
    }
    
  • 定义Neo4j数据模型
    在应用的models.py中用neomodel定义节点和关系,示例如下:
    from neomodel import StructuredNode, StringProperty, RelationshipTo
    
    class Book(StructuredNode):
        title = StringProperty(required=True)
        author = StringProperty(required=True)
        category = RelationshipTo('Category', 'BELONGS_TO')
    
    class Category(StructuredNode):
        name = StringProperty(unique_index=True, required=True)
    
  • 定义GraphQL类型和查询逻辑
    在项目根目录新建schema.py文件,编写Graphene类型和解析函数:
    import graphene
    from graphene_django import DjangoObjectType
    from <你的应用名称>.models import Book, Category
    
    class BookType(DjangoObjectType):
        class Meta:
            model = Book
            fields = ("id", "title", "author", "category")
    
    class CategoryType(DjangoObjectType):
        class Meta:
            model = Category
            fields = ("id", "name")
    
    class Query(graphene.ObjectType):
        all_books = graphene.List(BookType)
        books_by_category = graphene.List(BookType, category_name=graphene.String())
    
        def resolve_all_books(root, info):
            return Book.nodes.all()
    
        def resolve_books_by_category(root, info, category_name):
            category = Category.nodes.get(name=category_name)
            return category.book.all()
    
    schema = graphene.Schema(query=Query)
    
  • 配置接口路由
    在项目的urls.py中添加GraphQL接口路由:
    from django.urls import path
    from graphene_django.views import GraphQLView
    
    urlpatterns = [
        # 你的原有路由
        path("graphql/", GraphQLView.as_view(graphiql=True)),
    ]
    
  • 测试接口
    启动Django服务后,访问http://localhost:8000/graphql即可打开GraphiQL调试界面,输入如下查询语句测试:
    query {
      allBooks {
        id
        title
        author
      }
    }
    

学习资源推荐

  • 优先通读Graphene-Django官方文档的类型定义、解析函数相关章节,掌握GraphQL接口的基础开发逻辑
  • 通读neomodel官方文档的节点定义、关系定义、查询语法相关章节,熟悉Neo4j数据在Python中的操作方式
  • 可以先从单节点的增删改查接口开始练习,再逐步拓展到带关系查询、嵌套查询的场景,遇到映射问题优先核对模型字段和Graphene类型的对应关系

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 23:45:03