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)  

3. Creating Tables

You can trigger table creation easily.

db.create_all()  

3. Database Operations in Routes

Use db.Session with FastAPI's Depends to get a clean session for every request.

from fastapi import FastAPI, Depends  
from .. import db  

app = FastAPI()  

@app.get("/users")  
def read_users(session: Session = Depends(db.Session)):  
    users = session.query(User).all()  
    return users  

◽ 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

◽ 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.5.tar.gz (4.9 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.5-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fastapi_sqlalchemy_ease-0.1.5.tar.gz
  • Upload date:
  • Size: 4.9 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.5.tar.gz
Algorithm Hash digest
SHA256 f17eb15969d64275db9812a475262fad6ebadbf971ad3494f484323f389f8fba
MD5 d57d3ac2189f2700aaab2a5d62788cdb
BLAKE2b-256 a9069bcec7294233bb1fa1425655af84c06dd0e7d1b502c0014d4f0c4705b772

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fastapi_sqlalchemy_ease-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 73b3d1fc76c4d1a52d95a9fcded89da7e218947d7ae69a5b4f6050d495103195
MD5 918b1c94692b2b44bb9ea320f4a41155
BLAKE2b-256 904d7b582ec9298337bf1cce98582388fee4acd4c6b0fee6bcbccd4ed0b651de

See more details on using hashes here.

Provenance

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