neomodel
An object mapper for the neo4j graph database.
Decision gist · record as of 2026-08-14
Yes. Neomodel is production-ready (Development Status 5), actively maintained with recent releases, has no known vulnerabilities, and low install friction. It's the right choice if you want to model a Neo4j graph as Python classes with an ORM-like query API rather than writing raw Cypher. Install it if you're building a graph application in Python and prefer declarative models over manual driver calls.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10+ and a running Neo4j 4.4, 5.x, or 2025.x.x database instance with network access configured.
- Low install friction with a pure-Python wheel and only two runtime dependencies (neo4j and typing-extensions).
- The project is actively maintained with a recent release and 1089 repository stars, indicating stable community backing.
License · maintenance · safety
MIT (permissive) — MIT license is permissive, allowing use in commercial and private projects with minimal restrictions—you must include the license notice but have broad freedom to modify and redistribute.
last release 2026-06-23 (52 days) · last repo commit 2026-07-16 · 1,089 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 227,709 downloads/mo, #9,169 on PyPI
Alternatives
Verify before relying
pip install neomodel
from neomodel import StructuredNode, StringProperty, RelationshipTo
class Person(StructuredNode):
name = StringProperty(required=True)
knows = RelationshipTo('Person', 'KNOWS')
# Query: people = Person.nodes.filter(name='Alice')- Actual performance overhead compared to raw neo4j driver in production workloads beyond the locust benchmarks mentioned.
- Compatibility matrix details for Neo4j 2025.x.x versions and any breaking changes from 6.0.0 not covered in the excerpt.
- Thread-safety guarantees under high concurrency with connection pooling behavior.
What it is and what it does
Neomodel is an Object Graph Mapper that bridges Python classes and Neo4j graph databases. You define your domain model as Python classes with typed properties and relationships, then use a familiar ORM-style query API to fetch, filter, and traverse the graph. It handles schema enforcement through cardinality restrictions, full transactions, and pre/post hooks for lifecycle events. The package is built as a thin wrapper around the neo4j driver, so it adds minimal overhead while providing the convenience of declarative model definitions.
The library supports both synchronous and asynchronous code paths (via automatic transpilation), making it suitable for concurrent applications. It integrates with Django through a separate package and supports Neo4j Community, Enterprise, and Aura deployments. Version 6.2.0 requires Python 3.10+ and works with Neo4j 4.4 LTS through current versions, with recent additions like native semantic index support for vector and full-text search.
Use it for
- Define a social network graph with Person and Company nodes, then query relationships like 'find all people who work at companies in a specific city'.
- Build a knowledge graph where entities and their relationships are modeled as classes, with automatic schema validation on save.
- Migrate from a relational database to Neo4j by mapping your existing ORM models to graph nodes and relationships.
- Implement transaction-safe operations in a concurrent web service that reads and writes to Neo4j without manual connection management.
- Add vector search to an application by using neomodel's native semantic index support for embedding-based queries.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
Neomodel is production-ready (Development Status 5), actively maintained with recent releases, has no known vulnerabilities, and low install friction. It's the right choice if you want to model a Neo4j graph as Python classes with an ORM-like query API rather than writing raw Cypher. Install it if you're building a graph application in Python and prefer declarative models over manual driver calls.
Install
neomodel on PyPI
Before you install
Low install friction with a pure-Python wheel and only two runtime dependencies (neo4j and typing-extensions). The project is actively maintained with a recent release and 1089 repository stars, indicating stable community backing.
Requires Python 3.10+ and a running Neo4j 4.4, 5.x, or 2025.x.x database instance with network access configured.
License in practice
MIT license is permissive, allowing use in commercial and private projects with minimal restrictions—you must include the license notice but have broad freedom to modify and redistribute.
Quickstart
pip install neomodel
from neomodel import StructuredNode, StringProperty, RelationshipTo
class Person(StructuredNode):
name = StringProperty(required=True)
knows = RelationshipTo('Person', 'KNOWS')
# Query: people = Person.nodes.filter(name='Alice')
Verify before relying
- Actual performance overhead compared to raw neo4j driver in production workloads beyond the locust benchmarks mentioned.
- Compatibility matrix details for Neo4j 2025.x.x versions and any breaking changes from 6.0.0 not covered in the excerpt.
- Thread-safety guarantees under high concurrency with connection pooling behavior.
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release >=3.10 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 2 packagesneo4jtyping-extensions |
| Maintenance | Actively maintained 52 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 227,709 / month, #9,169 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Topic :: DatabaseTopic :: Software Development :: Libraries :: Python Modules |
Evidence: neomodel-6.2.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “neo4j object mapper”
- neomodelAn Object Graph Mapper (OGM) for Neo4j that lets you define graph…
- py2neoPy2neo is a Python client library for Neo4j that provides Bolt and…
- odmanticODMantic is an async-first Object Document Mapper for MongoDB that…
Give your agent the search over MCP, or paste the wish link into any chat.
More Python Modules packages
Converts domain names between Unicode and ASCII-compatible encoding (Punycode) according to IDNA 2008 and Unicode Technical Standard 46, with security validation and broader script coverage than the standard library.
Install it if you work with internationalized domain names, need to validate domains, or use HTTP clients that depend on it transitively.
Setuptools is a Python build backend and package management tool that handles building, distributing, and installing Python packages, including support for C/C++ extension modules.
PyYAML parses and emits YAML 1.1 data format, enabling serialization and deserialization of configuration files and Python objects to and from human-readable YAML text.
Pydantic validates Python data structures against type hints, coercing and checking input at runtime to ensure it matches a declared schema.
Provides reusable metadata objects for use with PEP-593 `typing.Annotated` to express common constraints like bounds, collection sizes, and predicates on types.
Install it if you use or build libraries that need to express type constraints in a standardized, inspectable way—or if you want to annotate your own types with…
Provides runtime tools to inspect and introspect Python type annotations, enabling programmatic examination of type hints at execution time.
See also graphlib · neo4j-driver · py2neo · neo4j-graphrag · neo4j · langchain-neo4j · FalkorDB · graphdatascience · kuzu · webrtc-models