Skip to main content

pypaginate.adapters.sqlalchemy.backend

Offset pagination backends (async and sync).

Each backend counts matching rows with SELECT COUNT(*) and fetches the requested window with OFFSET / LIMIT, returning an :class:OffsetPage whose metadata is derived by the core. Filtering / sorting are applied by the caller on the query before it is handed in.

SQLAlchemyBackend Objects

class SQLAlchemyBackend(Generic[ItemT])

Async offset pagination backend.

Arguments:

  • session - An async SQLAlchemy session.

count

async def count(query: object) -> int

Count the rows matched by query.

fetch

async def fetch(query: object, offset: int, limit: int) -> list[ItemT]

Fetch the offset / limit window of query as scalars.

paginate

async def paginate(query: object, params: OffsetParams) -> OffsetPage[ItemT]

Offset-paginate query into an :class:OffsetPage.

SyncSQLAlchemyBackend Objects

class SyncSQLAlchemyBackend(Generic[ItemT])

Sync offset pagination backend.

Arguments:

  • session - A synchronous SQLAlchemy session.

count

def count(query: object) -> int

Count the rows matched by query.

fetch

def fetch(query: object, offset: int, limit: int) -> list[ItemT]

Fetch the offset / limit window of query as scalars.

paginate

def paginate(query: object, params: OffsetParams) -> OffsetPage[ItemT]

Offset-paginate query into an :class:OffsetPage.