2011-12-02 9 views
13

Mi chiedo se ci sia una soluzione (o una necessità per) un ORM con Graph-Database (per esempio Neo4j). Sto monitorando le relazioni (A è legato a B che è correlato ad A via C ecc., Costruendo così un grande grafico) di entità (inclusi attributi aggiuntivi per quelle entità) e ho bisogno di memorizzarle in un DB, e penso che sia un database grafico si adatterebbe perfettamente a questo compito.ORM con database grafico come Neo4j in Python

Ora, con DB di tipo sql, utilizzo sqM di sqlalchemyś per archiviare i miei oggetti, soprattutto per il fatto che posso recuperare oggetti dal db e lavorare con essi in stile pitonico (usare i loro metodi, ecc.).

Esiste una soluzione di mappatura degli oggetti per Neo4j o altri Graph-DB, in modo da poter archiviare e recuperare oggetti Python in e dal DB grafico e lavorare con essi facilmente?

o volete scrivere alcune funzioni o adattatori come nella documentazione python sqlite (http://docs.python.org/library/sqlite3.html#letting-your-object-adapt-itself) per recuperare e memorizzare gli oggetti ?

+1

Penso che ci potrebbero essere http://stackoverflow.com/questions/5866635/neo4j-and-django-models che è interessante qui? –

risposta

5

Ci sono un paio di scelte in Python in questo momento, basate sulle interfacce REST dei database.

Come menzionato nel link @Peter fornito, stiamo lavorando a neo4django, che aggiorna la vecchia integrazione Neo4j/Django. È una buona scelta se hai bisogno di query complesse e vuoi un ORM che gestisca anche l'indicizzazione dei nodi o se stai già utilizzando Django. Funziona in modo molto simile al nativo Django ORM. Trovalo su PyPi o GitHub.

C'è anche una soluzione più generale chiamata Bulbflow che dovrebbe funzionare con qualsiasi database grafico supportato da Blueprints. Non l'ho usato, ma da quello che ho visto si concentra sulla modellazione di domini - Bulbflow ha già modelli di relazione di lavoro, per esempio, su cui stiamo ancora lavorando, ma non supporta molto le query complesse (come facciamo noi con querysets Django + uso indice). Ti consente anche di lavorare un po 'più vicino al grafico.

+0

Bulbflow sembra abbastanza bello, lo darei un'occhiata. È legato a Flask ecc. Oppure puoi usarlo "standalone"? (Penso di sì). Neo4j Django sembra anche bello, ma mi piacerebbe avere una soluzione plattform/framework-independent o standalone (che potrebbe essere legata a un framework in seguito). – dorvak

+0

Da quello che capisco, Bulbflow può essere usato standalone. La risposta di @ versae sembra essere d'accordo. E poiché vendo sempre, nonostante il nome, neo4django- ha alcune dipendenze di codice su Django ma non richiede l'uso del framework effettivo :) –

+0

La risposta non è più rilevante: sia neo4django che bulbflow sono abbandonati. Un OGM più recente (Object-Graph-Mapper) è neomodel e django-neomodel se stai usando Django. – Pawamoy

6

Forse potresti dare un'occhiata a Bulbflow, che consente di creare modelli in Django, Flask o Pyramid. Tuttavia, funziona su un REST client invece del python-binding fornito da Neo4j, quindi forse non è veloce come il binding nativo.

9

spudorato ... c'è anche la mia ORM cui si consiglia inoltre di checkout: https://github.com/robinedwards/neomodel

E 'costruito in cima py2neo, utilizzando Cypher e le chiamate alle API di riposo sotto il cofano, cioè senza dipendenza da gremlin.

+0

Nota: neomodel non è più costruito su py2neo ma sul driver neo4j ufficiale. – Pawamoy

Problemi correlati