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.8.tar.gz (5.2 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.8-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fastapi_sqlalchemy_ease-0.1.8.tar.gz
  • Upload date:
  • Size: 5.2 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.8.tar.gz
Algorithm Hash digest
SHA256 565916523a775bbb0e678fd063818d1d42e4e36fe0b6f7c286856d8c4b9f3651
MD5 bc127e42c867c593aa1f5e80f3d4cf7f
BLAKE2b-256 10aa77bda2f8b4041913034ee83005b3e933c288690f45ef02d5622e987515b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastapi_sqlalchemy_ease-0.1.8.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.8-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_sqlalchemy_ease-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 31ff17a3eb31ebd19eecd46998785fb680138f19aed98c6e93e4fbd76b4501bf
MD5 095f8a47301d6e0f0f9644217a9e3c78
BLAKE2b-256 26d382c1c8f74b2605766d1547de95ad3d3bf9cc2c6527ab9ef0cb000fd24957

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastapi_sqlalchemy_ease-0.1.8-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