https://github.com/smithyhq/sqladmin
SQLAlchemy Admin for FastAPI and Starlette
https://github.com/smithyhq/sqladmin
admin admin-dashboard asgi asyncio fastapi python sqlalchemy starlette web wsgi
Last synced: about 15 hours ago
JSON representation
SQLAlchemy Admin for FastAPI and Starlette
- Host: GitHub
- URL: https://github.com/smithyhq/sqladmin
- Owner: smithyhq
- License: bsd-3-clause
- Created: 2021-12-22T10:09:54.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2026-03-31T08:43:54.000Z (6 days ago)
- Last Synced: 2026-03-31T10:27:41.922Z (6 days ago)
- Topics: admin, admin-dashboard, asgi, asyncio, fastapi, python, sqlalchemy, starlette, web, wsgi
- Language: Python
- Homepage: https://smithyhq.github.io/sqladmin/
- Size: 3.36 MB
- Stars: 2,696
- Watchers: 16
- Forks: 270
- Open Issues: 105
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
- best-of-web-python - GitHub - 26% open · ⏱️ 31.03.2026): (FastAPI Utilities)
README
---
# SQLAlchemy Admin for Starlette/FastAPI
SQLAdmin is a flexible Admin interface for SQLAlchemy models.
Main features include:
* [SQLAlchemy](https://github.com/sqlalchemy/sqlalchemy) sync/async engines
* [Starlette](https://github.com/encode/starlette) integration
* [FastAPI](https://github.com/tiangolo/fastapi) integration
* [WTForms](https://github.com/wtforms/wtforms) form building
* [SQLModel](https://github.com/tiangolo/sqlmodel) support
* UI using [Tabler](https://github.com/tabler/tabler)
---
**Documentation**: [https://smithyhq.github.io/sqladmin](https://smithyhq.github.io/sqladmin)
**Source Code**: [https://github.com/smithyhq/sqladmin](https://github.com/smithyhq/sqladmin)
---
## Installation
Install using `pip`:
```shell
$ pip install sqladmin
```
This will install the full version of sqladmin with optional dependencies:
```shell
$ pip install "sqladmin[full]"
```
---
## Screenshots

## Quickstart
Let's define an example SQLAlchemy model:
```python
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`:
```python
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`:
```python
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
* [Flask-Admin](https://github.com/flask-admin/flask-admin) Admin interface for Flask supporting different database backends and ORMs. This project has inspired SQLAdmin extensively and most of the features and configurations are implemented the same.
* [FastAPI-Admin](https://github.com/fastapi-admin/fastapi-admin) Admin interface for FastAPI which works with `TortoiseORM`.
* [Dashboard](https://github.com/encode/dashboard) Admin interface for ASGI frameworks which works with the `orm` package.