【问题标题】:MVC and OOP in py2neopy2neo 中的 MVC 和 OOP
【发布时间】:2013-04-02 15:48:48
【问题描述】:

我正在寻找一些使用 py2neo 的“最佳实践”编码风格。 来自 Django ORM 和 Bulbs(另一个 python neo4j 库),我习惯于像这样将模型与控制器分离的 MVC 风格:

class Node_Type_A(Node):
    element_type = 'A node'
    modified = DateTime(default=now())

    def custom_A_method(self):
        pass

我读到这是通过元类完成的,我认为它在 py2neo 中不可用,而且很可能是矫枉过正。

但我想知道一个好的实用的 py2neo 编码风格来实现:

  • 一些节点/关系模板(节点类型A 是否有modified var?属于什么类型?我的节点node_b 属于什么类型?)
  • 将每个节点类型的变量和方法放在一起:

    res = graph_db.create({dict})
    res.custom_A_method()
    
  • 将更改的变量保存回数据库,例如a.modified = now()

在 py2neo 中的实现方式是什么? 感谢您的任何提示!

【问题讨论】:

    标签: python py2neo


    【解决方案1】:

    如果您正在使用(或来自)Django,那么我建议您查看 Rob Edwards 的 neomodel。它建立在 py2neo 之上,特别适合在 Django 中使用,但在该环境之外同样可用。它是为 Django 模型风格的编码风格而设计的,这种风格应该很熟悉,希望能给你想要的东西!

    【讨论】:

    • 太好了,这正是我想要的!但是作为一个新手,我很想知道这个额外的模型层对于经验丰富的程序员来说是否只是开销。那么,当您自己使用 py2neo 编码时,您将如何处理将方法与 neo4j 节点相关联?你会编写普通函数(MVC 吗??),还是自己使用 neomodel 或以某种方式构建自己的关联类?我不再使用 django,并且希望在继续使用 MVC 的同时尽可能降低复杂性。
    • 这不是开销,因为它提供了 py2neo 本身没有的抽象层。 py2neo 提供的 API 更接近 Neo4j 公开的 API,而 neomodel API 更接近 Django。您正在编写 Web 应用程序吗?如果是这样,您是否使用(非 Django)框架?如果没有,您可能不想过分关注 MVC 架构,因为它最常用于 Web 上下文。
    • Flask 是一个很好的选择。 Neomodel 应该适用于您的模型层。
    • 2 年后,感谢提及 neomodel。这正是我需要抽象一个层次以从在 Neo4j 中实现的 Flask 中获取我的数据模型的内容。 Bulbs 看起来很有希望,但回购对世界来说已经死了。生活是美好的!
    猜你喜欢
    • 2013-07-26
    • 2011-09-16
    • 2016-04-21
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 2014-11-22
    相关资源
    最近更新 更多