// the find
piccolo-orm/piccolo
A fast, user friendly ORM and query builder which supports asyncio.
Piccolo is an async-first Python ORM and query builder for Postgres, SQLite, and CockroachDB, with autogenerated migrations and a companion admin GUI. It's aimed at ASGI developers (FastAPI, Starlette, Litestar, and similar) who want Django-style modeling without pulling in Django itself.
You can drop between query-builder calls and ActiveRecord-style object calls on the same table, so you don't have to commit to one API upfront. Everything is fully type-annotated with working tab completion in iPython/VSCode, which makes exploring a schema interactively genuinely useful instead of guessing at method names. Migrations are autogenerated by diffing table definitions (schema_differ.py, migration_manager.py) rather than hand-written, closer to Django's workflow but built for async. `piccolo asgi new` scaffolds working apps for eight different frameworks (FastAPI, Starlette, Litestar, BlackSheep, Sanic, Falcon, Quart, Lilya, Ravyn), so that integration surface is actually exercised, not just claimed in docs.
Only three database backends are supported (Postgres, SQLite, CockroachDB) — no MySQL/MariaDB or SQL Server, which rules it out immediately for teams not already on one of those. The ecosystem is split across three repos (piccolo, piccolo_admin, piccolo_api), and customizing the admin interface means touching a Vue.js frontend most Python shops won't have the context to maintain. At under 2,000 stars its user base is a sliver of SQLAlchemy's or Django ORM's, so expect thinner Stack Overflow coverage and fewer third-party extensions. The migrations code carries both `serialisation.py` and `serialisation_legacy.py` side by side, a sign the autogeneration logic has accumulated backward-compat baggage — worth reading the changelog before trusting an auto-generated migration against a schema you actually care about.