An Object Graph Mapper (OGM) for the Neo4j graph database, providing a familiar class-based modeling interface with full transaction support.
neomodel is an Object Graph Mapper (OGM) for the Neo4j graph database, built on the official Neo4j Python driver. It allows developers to define graph nodes and relationships as Python classes, providing a familiar ORM-like interface for building and querying graph data without writing raw Cypher queries.
Python developers building applications with Neo4j who want a higher-level, class-based abstraction over the graph database, particularly those familiar with ORM patterns from frameworks like Django or SQLAlchemy.
Developers choose neomodel for its minimal performance overhead, full transaction support, and intuitive query API that makes working with Neo4j feel natural in Python, while maintaining compatibility with Neo4j Enterprise, Community, and Aura deployments.
An Object Graph Mapper (OGM) for the Neo4j graph database.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Performance tests show neomodel adds very thin wrapping over the Neo4j driver, with async mode being faster for concurrent operations, as noted in the Locust comparison.
It enforces data integrity through cardinality restrictions on relationships, preventing invalid graph structures without manual validation.
Seamlessly integrates with Django via django_neomodel, making it ideal for web applications already using Django's ORM patterns.
Version 6.0 introduces a dataclass-based configuration system with typing and environment variable support, improving setup and maintenance.
Version 6.0 introduced breaking changes like list object resolution fixes, which can disrupt upgrades and require code adjustments.
Running the test suite requires specific environment variables and Neo4j configurations, indicating a steeper learning curve for development and CI.
It's tightly coupled to Neo4j, offering no support for other graph databases, which limits flexibility if project requirements change.