ORM с базами данных Graph, такими как Neo4j в Python - PullRequest
17 голосов
/ 02 декабря 2011

Интересно, есть ли решение (или необходимость) ORM с Graph-Database (например, Neo4j). Я отслеживаю отношения (A связан с B, который связан с A через C и т. Д., Таким образом, создавая большой граф) сущностей (включая дополнительные атрибуты для этих сущностей) и должен хранить их в БД, и я думаю, что Графическая база данных идеально подходит для этой задачи.

Теперь, с sql-подобными БД, я использую sqlalchemyś ORM для хранения своих объектов, особенно из-за того, что я могу извлекать объекты из БД и работать с ними в питоническом стиле (использовать их методы и т. Д.).

Существует ли какое-либо решение для отображения объектов для Neo4j или другой Graph-DB, чтобы я мог хранить и извлекать объекты Python в Graph-DB и обратно и легко работать с ними?

Или вы бы написали некоторые функции или адаптеры, как в документации по Python sqlite (http://docs.python.org/library/sqlite3.html#letting-your-object-adapt-itself) для извлечения и хранения объектов?

Ответы [ 3 ]

10 голосов
/ 30 октября 2012

Бесстыдный штекер ... есть также мой собственный ORM, который вы также можете заказать: https://github.com/robinedwards/neomodel

Он построен поверх py2neo, использует вызовы cypher и rest API изнутри, т.е. не зависит от gremlin.

7 голосов
/ 02 декабря 2011

Может быть, вы могли бы взглянуть на Bulbflow , который позволяет создавать модели в Django, Flask или Pyramid.Однако он работает на REST-клиенте вместо python-привязки , предоставляемой Neo4j, поэтому, возможно, он не такой быстрый, как собственное связывание.

7 голосов
/ 02 декабря 2011

В настоящее время в Python есть несколько вариантов, основанных на REST-интерфейсах баз данных.

Как я упоминал в приведенной ссылке @Peter, мы работаем над neo4django, который обновляет старый Neo4j.Интеграция с Django.Это хороший выбор, если вам нужны сложные запросы и вы хотите ORM, который также будет управлять индексацией узлов, или если вы уже используете Django.Это работает очень похоже на родной Django ORM.Найдите его на PyPi или GitHub .

. Существует также более общее решение под названием Bulbflow , которое должно работать с любой графовой базой данных, поддерживаемойсветокопии.Я не использовал его, но из того, что я видел, он сфокусирован на моделировании предметной области - в Bulbflow уже есть, например, рабочие модели отношений, над которыми мы все еще работаем, - но они не поддерживают сложные запросы (как мы это делаем).с наборами запросов Django + использование индекса).Это также позволяет вам работать немного ближе к графику.

...