问题描述
我正在开发一个项目,我需要使用 Django 服务器 (Graphene-Django) 和 Neo4J 数据库制作 GraphQL API。我在互联网上看了很多,但我找不到任何有用的资源。如果有人可以给出流程的简单示例或建议一些资源,请提供帮助。
解决方法
我使用了所有 3 个堆栈:
- Graphene-Django 与 Postgresql DB
- Django 与 Neo4j 和 Postgresql
- Neo4j
我可以告诉你实际上你可以拥有一个或另一个。
Neo4j 具有自己的网络界面和自己的 GraphQL API 内置:
- http://yourhost:7474/browser/
- http://yourhost:7474/api/
对于 Django 与 Neo4j 一起工作,您可以使用 neomodel 甚至更好的 django 版本:django-neomodel 使用 {{ 1}} 在幕后。
我实际上有一个单独的设置,我使用 Django REST Framework 和我在 Neo4j 中存储的所有内容,我将它公开在 REST 端点而不是 GraphQL 中。
所以我想说您可以使用 django-neomodel 来管理/处理您的数据,您可以简单地决定是否要:
- 使用 Graphene-Django 来公开 Neo4j 包含的所有数据
- 使用Neo4j GraphQL API
但有一件事...我仍然建议您拥有一个 DEFAULT_DATABASE 官方支持的其中之一来处理用户相关数据和身份验证。
个人评论:Neo4j 是一项伟大的技术,但在交易速度(Postgres 或其他关系数据库的优势)方面并不是最快的。
毕竟它是一种在 Java 上运行的技术,而不是像大多数其他数据库那样在 C++ 上运行......所以请记住这一点。
祝你好运。
,我正在运行一个类似的设置,但你在这里谈论了很多事情,如果你把这些概念分开可能更容易理解。
如果您只考虑在 Python 中运行 Neo4j(独立于 Django),最容易理解。
Neo4j/Python
- 让您的 Neo4j 运行并能够使用 python 连接到它(我使用 py2neo)。
我从这里开始制作了一个制作 neo4j flask 应用程序的视频演示:https://www.youtube.com/watch?v=h8cyPIEfxQY&t=1215s
代码在这里:https://github.com/elena/graph-fun/blob/master/notebook.ipynb
Django/石墨烯
- 让您的 Django 项目运行起来。在 Django 中设置石墨烯(注意,围绕石墨烯/graphQL 是另一回事,但单独执行此步骤,确保您了解传统 Django 应用如何连接到石墨烯)。
这里的一些神奇之处在于我们使用 GraphiQL 为 GraphQL 端点提供服务:https://github.com/graphql/graphiql 这通常会让您的生活更轻松。
这些文档:https://www.fullstacklabs.co/blog/django-graphene-rest-graphql
Python/石墨烯/Neo4j
- 在您的 Django 项目中为您的 Neo4j 连接和语句制作一个模块/应用程序。这里需要注意的重要一点是:石墨烯并不关心数据来自哪里。只需使用普通的 python-graphene 将任何数据发送到石墨烯
schema.py
这是 Flask 示例代码 (https://github.com/elena/graph-fun/blob/master/app.py),但您可以将 Neo4j 输出提供给您的 GraphQL python 架构。
看,python(不是 Django)Graphene 不在乎数据来自哪里:https://docs.graphene-python.org/en/latest/quickstart/
最后,您可以将其全部包含在您的 django 网址中,以便使用 graphiql 提供服务。
--
因此您需要 django-graphene 来为您的 schema.py/urls 提供服务,但这使事情变得过于复杂。
然后你需要退后一步,使用朴素的 python-graphene 来为 Neo4j 服务。
至少这对我有用。