微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我正在开发一个项目,我需要使用 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/

对于 DjangoNeo4j 一起工作,您可以使用 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

  1. 让您的 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/石墨烯

  1. 让您的 Django 项目运行起来。在 Django 中设置石墨烯(注意,围绕石墨烯/graphQL 是另一回事,但单独执行此步骤,确保您了解传统 Django 应用如何连接到石墨烯)。

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

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

Python/石墨烯/Neo4j

  1. 在您的 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 服务。

至少这对我有用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。