Source code: https://github.com/volfpeter/motorhead
Documentation and examples: https://volfpeter.github.io/motorhead
Async MongoDB/DocumentDB with vanilla Pydantic v2+ - made easy.
Key features:
- Database model and API design with vanilla
Pydanticv2+. - Relationship support and validation using async validators and delete rules with a declarative, decorator-based syntax.
- ODM-like query builder for convenient, typed, and Pythonic query construction.
- Declarative index specification.
- Typed utilities for convenient model and API creation.
- Ready to use, customizable async service layer with transaction support that integrates all the above to keep your business logic clean, flexible, and easy to understand.
- Simplicity: by not being a classic ODM, the codebase is very simple and easy to understand (even contribute to) even for relative beginners.
By providing a convenient, declarative middle layer between MongoDB/DocumentDB and your API, motorhead is halfway between an object document mapper (based on vanilla Pydantic) and a database driver (by wrapping the official async pymongo driver). What's missing is the built-in ODM performance and memory overhead, whose benefits are rarely felt when working with document databases.
See the full documentation here.
The library is available on PyPI and can be installed with:
$ pip install motorheadSee the documentation for usage and application examples.
The project depends on pymongo (the official async MongoDB driver) and pydantic v2+.
Use ruff for code formatting and linting, mypy for static code analysis, and pytest (with pytest-asyncio and pytest-docker) for testing.
The documentation is built with mkdocs-material and mkdocstrings.
All contributions are welcome.
The library is open-sourced under the conditions of the MIT license.