Metadata-Version: 2.4
Name: sqlalchemy-memory
Version: 0.4.0
Summary: In-memory SQLAlchemy 2.0 dialect for blazing‑fast prototyping.
Author: Mickael Burguet
License: MIT
Project-URL: Homepage, https://github.com/rundef/sqlalchemy-memory
Project-URL: Repository, https://github.com/rundef/sqlalchemy-memory
Project-URL: Issues, https://github.com/rundef/sqlalchemy-memory/issues
Keywords: sqlalchemy,in-memory database,memory store,prototype,testing,python orm,sqlalchemy dialect,sqlite alternative,lightweight database
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Database :: Front-Ends
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: sqlalchemy<3.0,>=2.0
Requires-Dist: sortedcontainers>=2.4.0
Dynamic: license-file

# sqlalchemy-memory

[![PyPI - Version](https://img.shields.io/pypi/v/sqlalchemy-memory)](https://pypi.org/project/sqlalchemy-memory/)
[![CI](https://github.com/rundef/sqlalchemy-memory/actions/workflows/ci.yml/badge.svg)](https://github.com/rundef/sqlalchemy-memory/actions/workflows/ci.yml)
[![Documentation](https://app.readthedocs.org/projects/sqlalchemy-memory/badge/?version=latest)](https://sqlalchemy-memory.readthedocs.io/en/latest/)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/sqlalchemy-memory)](https://pypistats.org/packages/sqlalchemy-memory)


**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.

## Why ?

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**.

## Features

- **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

## Benchmark

Curious how `sqlalchemy-memory` stacks up?

[View Benchmark Results](https://sqlalchemy-memory.readthedocs.io/en/latest/benchmarks.html) comparing `sqlalchemy-memory` to `in-memory SQLite`

## Installation

```bash
pip install sqlalchemy-memory
```

## Documentation

[See the official documentation for usage examples](https://sqlalchemy-memory.readthedocs.io/en/latest/)

## Testing

Simply run `make tests`

## License

This project is licensed under the MIT License.
See [LICENSE](LICENSE) for details.
