/neomodel

An Object Graph Mapper (OGM) for the neo4j graph database

Primary LanguagePythonMIT LicenseMIT

neomodel

An Object Graph Mapper (OGM) for the neo4j graph database, built on the awesome neo4j_driver

  • Familiar Django model style definitions.
  • Powerful query API.
  • Enforce your schema through cardinality restrictions.
  • Full transaction support.
  • Thread safe.
  • pre/post save/delete hooks.
  • Django integration via django_neomodel
https://secure.travis-ci.org/robinedwards/neomodel.png Documentation Status

Documentation

Available on readthedocs.

Requirements

  • Python 2.7, 3.3+
  • neo4j 3.0, 3.1, 3.2

Installation

Install from pypi (recommended):

$ pip install neomodel

To install from github:

$ pip install git+git://github.com/robinedwards/neomodel.git@HEAD#egg=neomodel-dev

Upgrading 2.x to 3.x

  • Now utilises neo4j_driver as the backend which uses bolt so neo4j 3 is required
  • Connection now set through config.DATABASE_URL (see getting started docs)
  • The deprecated category() method on StructuredNode has been removed
  • The deprecated index property on StructuredNode has been removed
  • The streaming=True flag is now irrelevant with bolt and produces a deprecation warning
  • Batch operations must now be wrapped in a transaction in order to be atomic
  • Indexing NodeSets returns a single node now as opposed to a list

Contributing

Ideas, bugs, tests and pull requests always welcome.

Running the test suite

Make sure you have a fresh virtualenv and nose installed:

$ pip install nose

Also a Neo4j database version 3 or higher to run the tests on. (it will wipe this database for each test run):

$ export NEO4J_BOLT_URL=bolt://neo4j:neo4j@localhost:7687 # (the default)

Setup a virtual environment, install neomodel for development and run the test suite:

$ virtualenv venv
$ source venv/bin/activate
$ python setup.py develop
$ nosetests -s

If your running a neo4j database for the first time the test suite will set the password to 'test'.

Join the chat at https://gitter.im/robinedwards/neomodel