An async ORM for Python with support for Postgres, MySQL, and SQLite, built on SQLAlchemy core.
ORM is an asynchronous Object-Relational Mapper for Python that enables developers to interact with databases using async/await syntax. It supports multiple database backends including Postgres, MySQL, and SQLite, and provides a clean API for defining models and executing queries. The project solves the need for modern, non-blocking database access in Python applications.
Python developers building async web applications or services that require efficient database interactions without blocking the event loop. It's particularly useful for those using frameworks like Starlette, FastAPI, or any async Python stack.
Developers choose ORM for its async-first design, simplicity, and strong foundation on SQLAlchemy core, which ensures reliable query building and migration support. It offers a lightweight alternative to heavier ORMs while maintaining compatibility with the broader Python database ecosystem.
An async ORM. 🗃
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Built on async/await patterns, enabling non-blocking database operations that are ideal for modern Python web frameworks like FastAPI and Starlette, as shown in the quickstart example.
Works seamlessly with Postgres, MySQL, and SQLite using async drivers (asyncpg, aiomysql, aiosqlite), providing flexibility across different backend setups without vendor lock-in.
Leverages SQLAlchemy for robust query building and compatibility with Alembic migrations, ensuring reliable database schema management and ecosystem familiarity.
Uses Typesystem for field validation and type safety, offering data integrity checks out of the box without additional configuration, as highlighted in the features.
As a newer, lightweight ORM, it lacks the extensive plugin ecosystem, community tools, and third-party integrations available in more established options like Django ORM or full SQLAlchemy ORM.
Requires manual installation of separate database drivers (e.g., via 'pip install orm[postgresql]'), adding extra steps compared to all-in-one solutions that bundle dependencies.
Focuses on core mapping without advanced ORM features such as lazy loading, complex inheritance, or built-in caching, which might necessitate custom work for intricate data models.