我正在做一个项目,我需要使用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
- 运行您的Neo4j,并能够使用python连接到它(我使用py2neo(
我制作了一个制作neo4j烧瓶应用程序的视频演示,从这里开始: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/Graphene/Neo4j
- 在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服务。
至少这对我有效。