An object mapper for the neo4j graph database.
- 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
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://github.com/neo4j-contrib/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
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 setup.py 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: $ ./tests-with-docker-compose.sh