如何使用 Django 和 Neo4j 数据库创建 GraphQL API?



我正在做一个项目,我需要使用Django Server(Graphne-Django(和Neo4J数据库制作GraphQL API。我在网上找了很多,但没能找到任何有用的资源。如果有人能给出一个简单的流程示例或建议一些资源,请提供帮助。

我处理了所有3个堆栈:

  • Graphene Django与Postgresql数据库
  • Django与Neo4j&Postgresql
  • Neo4j

我可以告诉你,实际上你可以有一个或另一个。

Neo4j具有其自己的web界面它自己的GraphQL API内置:

  • http://yourhost:7474/browser/
  • http://yourhost:7474/api/

对于Django来说,要使用Neo4j,您可以使用neomodel,甚至更好的是它的Django版本:Django-neomodel在引擎盖下使用neomodel

实际上,我有一个单独的设置,我使用Django REST框架和我在Neo4j中存储的所有东西,我在REST端点而不是GraphQL中公开它。

所以我想说,你可以使用django-neomodel来管理/处理你的数据,你可以简单地决定是否要:

  • 使用GrapheneDjango公开包含的所有数据Neo4j
  • 使用Neo4j GraphQL API

不过有一件事。。。我仍然建议您使用一个DEFAULT_DATABASE官方支持的数据库来处理与用户相关的数据和身份验证。

作为个人评论:Neo4j是一项伟大的技术,但在事务速度方面并不是最快的(Postgres或其他关系数据库的亮点(。

毕竟,它是一种运行在Java上的技术,而不是像大多数其他数据库那样运行在C++上。。。所以请记住这一点。

祝你好运。

我正在运行类似的设置,但您在这里谈论了很多事情,如果您分解这些概念,可能会更容易理解。

如果你考虑在Python中运行Neo4j(独立于Django(,这是最容易理解的。

Neo4j/Python

  1. 运行您的Neo4j,并能够使用python连接到它(我使用py2neo(

我制作了一个制作neo4j烧瓶应用程序的视频演示,从这里开始:https://www.youtube.com/watch?v=h8cyPIEfxQY&t=1215s

代码如下:https://github.com/elena/graph-fun/blob/master/notebook.ipynb

Django/石墨烯

  1. 运行Django项目。在Django中设置石墨烯(注意,用石墨烯/graphQL包裹你的头是另一回事,但这一步要分开进行,确保你了解传统的Django应用程序如何连接到石墨烯(

这里的一些神奇之处在于,我们使用GraphiQL为GraphQL端点提供服务:https://github.com/graphql/graphiql这通常会让你的生活更轻松。

这些文档:https://www.fullstacklabs.co/blog/django-graphene-rest-graphql

Python/Graphene/Neo4j

  1. 在Django项目中为Neo4j连接和语句制作一个模块/应用程序。这里需要注意的是:石墨烯不在乎数据来自哪里。只需使用普通python石墨烯将任何数据发送到石墨烯schema.py

这是烧瓶示例代码(https://github.com/elena/graph-fun/blob/master/app.py),但是您可以将Neo4j输出提供给GraphQLpython模式。

看,python(而不是Django(Graphene不在乎数据来自哪里:https://docs.graphene-python.org/en/latest/quickstart/

最后,您可以将所有内容封装在django-url中,使用graphicql提供服务。

--

因此,你需要django石墨烯来为你的schema.py/uls提供服务器,但这会使事情过于复杂。

然后你需要退一步,使用幼稚的python石墨烯来为Neo4j服务。

至少这对我有效。

最新更新