2013-04-01 2 views
0

Я ищу стиль стиля «лучшей практики», используя py2neo. Исходя из Django ORM и луковиц (другая библиотека питона Neo4j), я привык к разделению MVC-стиль модели из контроллера, как это:MVC и OOP в py2neo

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

    def custom_A_method(self): 
     pass 

Я читал, что это делается с метаклассами, я думаю, что это не доступный в py2neo, и вполне может быть излишним.

Но я задаюсь вопрос о хорошем прагматичном стиле кодирования py2neo достичь:?

  • некоторых узла/отношения шаблонного (имеет типа узла A имеет modified вар какого типа, какой тип мой узел ? node_b)
  • сохраняя переменные и методы вместе каждого типа узла:

    res = graph_db.create({dict}) 
    res.custom_A_method() 
    
  • экономия изменили переменные обратно в базы данных, такие как a.modified = now()

Что способ сделать это в py2neo? Спасибо за любые подсказки!

ответ

1

Если вы работаете с (или исходящим) Django, то я рекомендую вам взглянуть на neomodel от Роба Эдвардса. Он построен поверх py2neo специально для использования в Django, но в равной степени полезен вне этой среды. Он разработан для стиля кодирования модели Django, который должен быть знаком и, надеюсь, даст вам то, что вы ищете!

+0

Отлично, это именно то, что я искал! Но, будучи новичком с этим, мне очень любопытно узнать, является ли этот дополнительный слой модели просто накладными расходами для опытного программиста. Итак, как бы вы относились к методам связи с узлами neo4j при кодировании с py2neo самостоятельно? Будете ли вы писать простые функции (MVC?) Или использовать neomodel самостоятельно или каким-то образом создавать свои собственные классы ассоциаций? Я больше не использую django и хотел бы как можно меньше сдержать сложность при выполнении MVC. – bebbi

+0

Это не накладные расходы, поскольку он обеспечивает слой абстракции, который сам py2neo не делает. API, предоставляемый py2neo, ближе к тому, что выставлено Neo4j, тогда как API-интерфейс neomodel ближе к Django. Вы пишете веб-приложение? Если да, используете ли вы (не-Django) рамки? Если нет, вы можете не захотеть слишком сильно сосредоточиться на архитектуре MVC, поскольку это наиболее часто используется в веб-контексте. –

+0

Да, это все еще веб - с использованием колбы. – bebbi