Skip to main content

A reusable SQLAlchemy extension for FastAPI

Project description

fastapi-sqlalchemy-ease

fastapi-sqlalchemy-ease is a singleton-based SQLAlchemy extension for FastAPI. It provides a centralized interface for database initialization, model declaration, and session management, inspired by the simplicity of Flask-SQLAlchemy.

◽ Key Features

  • Singleton Design: Ensures a single database instance across your entire FastAPI application.

  • Consolidated API: Access all SQLAlchemy types (Integer, String, ForeignKey, etc.) directly from the db object.

  • Auto-Cleanup: Includes a generator-based session handler designed for FastAPI's Depends to ensure sessions are always closed.

  • Built-in Lifecycle Management: Simple methods for create_all() and drop_all().

◽ Installation

pip install fastapi-sqlalchemy-ease

◽ Usage Guide

1. Basic setup

Initialize your database instance in a centralized file (e.g. database.py).

from fastapi_sqlalchemy_ease import SQLAlchemy  

'''Create the singleton instance''' 
db = SQLAlchemy()  

'''Initialize with your URI'''  
DATABASE_URI = "sqlite:///./test.db"  

'''Use connect_args={"check_same_thread": False} for SQLite'''  
db.init_app(DATABASE_URI, connect_args={"check_same_thread": False})  

2. Defining Models

No need to import types from SQLAlchemy; use the db instance directly.

class User(db.Model):  
    __tablename__ = "users"  

    id = db.Column(db.Integer, primary_key=True)  
    username = db.Column(db.String, unique=True, nullable=False)  
    created_at = db.Column(db.DateTime, default_server=db.func.now())  

3. Creating Tables

You can trigger table creation easily.

db.create_all()  

3. Database Operations in Routes

The extension provides a thread-safe db.Session for FastAPI dependencies and a Flask-like query property on models.

from fastapi import FastAPI, Depends  
from .. import db  

app = FastAPI()  

# Best for Reads
@app.get("/users")
def get_users():
    return User.query.all()

# Best for Writes (Auto-cleanup)
@app.post("/users")
def create_user(user_data: UserSchema, session=Depends(db.Session)):
    user = User(**user_data.dict())
    session.add(user)
    session.commit()
    return user  

◽ Available Attributes

Your db instance provides easy access to standard SQLAlchemy types and constraints:

Category - Available Attributes

Data Types - String, Integer, Float, Boolean, Text, Date, DateTime, JSON, Numeric
Constraints - ForeignKey, UniqueConstraint, CheckConstraint, Index
ORM - relationship, Table, Column
Logic and Boolean operators = and_, or_, not_
SQL Functions (count, now, max, min, etc.) = func
Query Execution Utilities = select, update, delete ordering = desc, asc

◽ Error Handling

The library includes a DatabaseNotInitializedError. If you attempt to access db.Model, db.Session, or lifecycle methods before calling db.init_app(), a clear exception will be raised to help you debug quickly.

📄 License

Distributed under the MIT License.

--

Project details


Download files

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

Source Distribution

fastapi_sqlalchemy_ease-0.1.7.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastapi_sqlalchemy_ease-0.1.7-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_sqlalchemy_ease-0.1.7.tar.gz.

File metadata

  • Download URL: fastapi_sqlalchemy_ease-0.1.7.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fastapi_sqlalchemy_ease-0.1.7.tar.gz
Algorithm Hash digest
SHA256 07e98c5ce7376c3b991eb0b18cc1eda020f284e659f1506d37624234a1f09c89
MD5 1e5846b5172d74f32d393b24f8c00b02
BLAKE2b-256 f0dd6dc8282ea617f42a50b03aa4dfb386404f1f6e0058b2f9575453a75f0ac7

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastapi_sqlalchemy_ease-0.1.7.tar.gz:

Publisher: release.yml on hardik-soni12/fastapi-sqlalchemy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastapi_sqlalchemy_ease-0.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_sqlalchemy_ease-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 ce0caf78566faad10fbb4ac5e4ded9d24f7a05b222af1cd0cad2a9205887fc42
MD5 7c3e2fe65d6dad979784d9b5855a7e15
BLAKE2b-256 ca398dc1bda2f704162796880f8bf2fc70982e9381f03198b6ae9d8ec0d1fca0

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastapi_sqlalchemy_ease-0.1.7-py3-none-any.whl:

Publisher: release.yml on hardik-soni12/fastapi-sqlalchemy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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