Skip to main content

SQLAlchemy extension for FastAPI with support for asynchronous SQLAlchemy sessions and pagination.

Project description

PROJECT HAS BEEN RENAMED TO FastSQLA

Check FastSQLA on Github or PyPI

FastAPI-Async-SQLA

PyPI - Version Conventional Commits codecov

FastAPI-Async-SQLA is an SQLAlchemy extension for FastAPI. It supports asynchronous SQLAlchemy sessions using SQLAlchemy >= 2.0 and provides pagination support.

Installing

Using pip:

pip install fastapi-async-sqla

Quick Example

Assuming it runs against a DB with a table user with 2 columns id and name:

# main.py
from fastapi import FastAPI, HTTPException
from fastapi_async_sqla import Base, Item, Page, Paginate, Session, lifespan
from pydantic import BaseModel
from sqlalchemy import select


app = FastAPI(lifespan=lifespan)


class User(Base):
    __tablename__ = "user"


class UserIn(BaseModel):
    name: str


class UserModel(UserIn):
    id: int


@app.get("/users", response_model=Page[UserModel])
async def list_users(paginate: Paginate):
    return await paginate(select(User))


@app.get("/users/{user_id}", response_model=Item[UserModel])
async def get_user(user_id: int, session: Session):
    user = await session.get(User, user_id)
    if user is None:
        raise HTTPException(404)
    return {"data": user}


@app.post("/users", response_model=Item[UserModel])
async def create_user(new_user: UserIn, session: Session):
    user = User(**new_user.model_dump())
    session.add(user)
    await session.flush()
    return {"data": user}

Creating a db using sqlite3:

sqlite3 db.sqlite <<EOF
CREATE TABLE user (
    id    INTEGER PRIMARY KEY AUTOINCREMENT,
    name  TEXT NOT NULL
);
EOF

Installing aiosqlite to connect to the sqlite db asynchronously:

pip install aiosqlite

Running the app:

sqlalchemy_url=sqlite+aiosqlite:///db.sqlite?check_same_thread=false uvicorn main:app

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi_async_sqla-0.2.4.tar.gz (5.4 kB view details)

Uploaded Source

File details

Details for the file fastapi_async_sqla-0.2.4.tar.gz.

File metadata

  • Download URL: fastapi_async_sqla-0.2.4.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.13.1

File hashes

Hashes for fastapi_async_sqla-0.2.4.tar.gz
Algorithm Hash digest
SHA256 5f33439e69cefc74f165fc237442b49ace914db243e5fd5d18e80c551ed732c3
MD5 3907e00f8040dda3776956683819b32d
BLAKE2b-256 2053f0fc6b39d6dc369e41212829329830d360d38b5a2ea4bc361cdc875bdea9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page