AsyncAlchemy
A thin async wrapper for SQLAlchemy sessions.
Besides being async, the wrapper manages the context of the session for the execution block.Commits incoming changes if successfull or rolls back changes if an exceptions occurs.
Note: The upcoming SQLAlchemy 1.4 version will include built-in async functionality, it's recommended to upgrade to it once it's released.
Install
Pip
pip install asyncalchemy
From Source
The project uses poetry for dependency management and packaging.
To run from source clone project and:
pip install poetry
poetry install
Usage
Basic Example
from asyncalchemy import create_session_factory
session_factory = create_session_factory(db_uri, Base)
async with session_factory() as session:
await session.query(Something).filter_by(something="else")
from sqlalchemy.pool import NullPool
from asyncalchemy import create_session_factory
session_factory = create_session_factory(db_uri, Base, poolclass=NullPool)
async with session_factory() as session:
await second_session.add(Something)
await second_session.flush()
async with session_factory(reuse_session=session) as second_session:
await session.delete(Something)