In‑memory SQLAlchemy 2.0 dialect for blazing‑fast prototyping
A pure‑Python SQLAlchemy 2.0 dialect that runs entirely in RAM. It avoids typical database I/O and ORM overhead while maintaining full compatibility with the SQLAlchemy 2.0 Core and ORM APIs. Ideal for rapid prototyping, backtesting engines, simulations.
This project was inspired by the idea of building a fast, introspectable, no-dependency backend for SQLAlchemy.
It is useful for:
-
Prototyping new applications
-
Educational purposes
-
Testing ORM logic without spinning up a real database engine
Unlike traditional in-memory solutions like SQLite, sqlalchemy-memory
fully avoids serialization, connection pooling, and driver overhead, leading to much faster in-memory performance while keeping the familiar SQLAlchemy API.
It is also perfect for applications that need a lightweight, high-performance store compatible with SQLAlchemy, such as backtesting engines, simulators, or other tools where you don't want to maintain a separate in-memory layer alongside your database models.
Data is kept purely in RAM and is volatile: it is not persisted across application restarts and is cleared when the engine is disposed.
- SQLAlchemy 2.0 support: ORM & Core expressions, sync & async modes
- Zero I/O overhead: pure in‑RAM storage (
dict
/list
under the hood) - Commit/rollback support
- Index support: indexes are recognized and used for faster lookups
- Lazy query evaluation: supports generator pipelines and short-circuiting
first()
-style queries avoid scanning the full dataset- Optimized for read-heavy workloads and streaming filters
Curious how sqlalchemy-memory
stacks up?
View Benchmark Results comparing sqlalchemy-memory
to in-memory SQLite
pip install sqlalchemy-memory
👉 See the official documentation for usage examples
Simply run make tests
This project is licensed under the MIT License. See LICENSE for details.