aminalaee / sqladmin

SQLAlchemy Admin for FastAPI and Starlette
https://aminalaee.dev/sqladmin/
BSD 3-Clause "New" or "Revised" License
1.7k stars 176 forks source link
admin admin-dashboard asgi asyncio fastapi python sqlalchemy starlette web wsgi

Build Status Publish Status Coverage Package version Supported Python versions


SQLAlchemy Admin for Starlette/FastAPI

SQLAdmin is a flexible Admin interface for SQLAlchemy models.

Main features include:


Documentation: https://aminalaee.dev/sqladmin

Source Code: https://github.com/aminalaee/sqladmin

Online Demo: Demo


Installation

Install using pip:

$ pip install sqladmin

This will install the full version of sqladmin with optional dependencies:

$ pip install "sqladmin[full]"

Screenshots

sqladmin-1 sqladmin-2

Quickstart

Let's define an example SQLAlchemy model:

from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import declarative_base

Base = declarative_base()
engine = create_engine(
    "sqlite:///example.db",
    connect_args={"check_same_thread": False},
)

class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True)
    name = Column(String)

Base.metadata.create_all(engine)  # Create tables

If you want to use SQLAdmin with FastAPI:

from fastapi import FastAPI
from sqladmin import Admin, ModelView

app = FastAPI()
admin = Admin(app, engine)

class UserAdmin(ModelView, model=User):
    column_list = [User.id, User.name]

admin.add_view(UserAdmin)

Or if you want to use SQLAdmin with Starlette:

from sqladmin import Admin, ModelView
from starlette.applications import Starlette

app = Starlette()
admin = Admin(app, engine)

class UserAdmin(ModelView, model=User):
    column_list = [User.id, User.name]

admin.add_view(UserAdmin)

Now visiting /admin on your browser you can see the SQLAdmin interface.

Related projects and inspirations