19

我想知道是否有解决方案(或需要)带有图形数据库(fe Neo4j)的 ORM。我正在跟踪实体(包括这些实体的附加属性)的关系(A与B相关,B通过C等与A相关,从而构建一个大图)并且需要将它们存储在数据库中,我认为图形数据库非常适合这项任务。

现在,对于类似 sql 的数据库,我使用 sqlalchemyś ORM 来存储我的对象,特别是因为我可以从数据库中检索对象并以 Python 风格使用它们(使用它们的方法等)。

Neo4j 或其他 Graph-DB 是否有任何对象映射解决方案,以便我可以在 Graph-DB 中存储和检索 python 对象并轻松使用它们?

或者您会编写一些函数或适配器,如 python sqlite 文档 (http://docs.python.org/library/sqlite3.html#letting-your-object-adapt-itself) 来检索和存储对象?

4

3 回答 3

11

无耻的插件......还有我自己的 ORM,您可能还想签出:https ://github.com/robinedwards/neomodel

它建立在 py2neo 之上,在后台使用 cypher 和 rest API 调用,即不依赖于 gremlin。

于 2012-10-30T17:23:32.570 回答
7

基于数据库的 REST 接口,目前 Python 有几个选择。

正如我在@Peter 提供的链接中提到的,我们正在开发 neo4django,它更新了旧的 Neo4j/Django 集成。如果您需要复杂的查询并想要一个管理节点索引的 ORM,或者您已经在使用 Django,这是一个不错的选择。它的工作方式与原生 Django ORM 非常相似。在PyPiGitHub 上找到它。

还有一个更通用的解决方案,称为Bulbflow,它应该适用于蓝图支持的任何图形数据库。我没有使用过它,但据我所见,它侧重于域建模——例如,Bulbflow 已经有工作关系模型,我们仍在研究它——但不太支持复杂的查询(正如我们所做的那样使用 Django 查询集 + 索引使用)。它还可以让您更接近图表。

于 2011-12-02T14:50:07.007 回答
7

也许你可以看看Bulbflow,它允许在 Django、Flask 或 Pyramid 中创建模型。但是,它在REST 客户端而不是 Neo4j 提供的python 绑定上工作,因此它可能不如本机绑定那么快。

于 2011-12-02T14:54:42.410 回答