Neo4j和Django模型

9

因此,我正在研究Django和Neo4j的集成,但是关于这方面的信息很少... 我想知道的是,如果我有一个像这里一样的模型:
如果我想向模型添加一个新属性,那么只需执行以下操作即可:

node.setProperty( "newProperty", "something" );

此外,Django中的所有查询都可以正常工作吗?遍历是如何进行的?

我会非常感激任何回应 :D

谢谢。

2个回答

7
我们一直在更新Neo4j/Django集成,以便与neo4j-rest-client兼容-我们的努力成果已经在GitHub上发布,并在我的博客中进行了一些快速评论。
我们的集成有一些优点和缺点。最明显的影响是我们使用REST客户端-您可以使用远程数据库,但性能方面会失去很多。另一方面,该集成可以与关系型数据库一起使用,因此仍然可以使用django.contrib工具,这些工具依赖于原始ORM,并且可以很好地处理索引和查询集。
要使用neo4django实现上述内容,您只需从模型实例获取基于neo4j-rest-client的节点,然后进行操作即可。
model_instance.node['newProperty'] = 'something'

我们仍在努力使集成更加动态化,以一种Pythonic的方式支持遍历等操作,并(目前最重要的)提高性能。如果您有兴趣,我很乐意听取反馈意见。

1
你看过Tobias关于Django集成的博客文章吗?虽然有点老了,但仍然相关。此外还有示例可以查看。

是的,我看到了,但正如你所说,这有点过时,所以我不确定是否有任何变化或升级。我会检查这些示例的。 - Milena Araujo
但是,我仍然不确定是否可以添加新属性..这只需要编辑我的models.py文件吗? - Milena Araujo
我已经有一段时间没有动手了,但应该是可以的。我以为你在谈论动态添加节点内容,而不是扩展模型。 - Steve Jalim
首先,我最初的想法也是如此,但如果我希望继续使用Django,那么这就是向实体添加新“信息”的方法。嗯...看不出在与Django一起使用Neo4j方面有多大优势,因为实体会附加到模型“类型”上,而遍历似乎没有很好地实现。更别提让它正常工作的困难了...我错了吗? - Milena Araujo
你是对的 - Django ORM 的全部工作都是关于创建模式,因此在Neo4j中使用Django-style ORM往往会将不自然的约束(如打字和模式)投射到数据库中。你总是可以使用新的neo4j.py或neo4j-rest-client与Django一起使用,完全避免ORM。如果它在你的领域中没有帮助,为什么要使用它呢?话虽如此,请参见下面我的答案。 - Matt Luongo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接