john-bodley / neomodel

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

Home Page:

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


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 Documentation Status


Available on readthedocs.


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


Install from pypi (recommended):

$ pip install neomodel

To install from github:

$ pip install git+git://

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


Ideas, bugs, tests and pull requests always welcome.

Running the test suite

Make sure you have 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 develop
$ pytest

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

If you have docker-compose installed, you can run the test suite against all supported Python interpreters and neo4j versions:

# in the project's root folder:
$ ./
Join the chat at
ezoic increase your site revenue


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

License:MIT License


Language:Python 99.2%Language:Shell 0.8%