Skip to content


Repository files navigation


Tests Release Documentation Status PyPI codecov

Piccolo is a fast, user friendly ORM and query builder which supports asyncio. Read the docs.


Some of it’s stand out features are:

  • Support for sync and async.
  • A builtin playground, which makes learning a breeze.
  • Tab completion support - works great with iPython and VSCode.
  • Batteries included - a User model, authentication, migrations, an admin GUI, and more.
  • Modern Python - fully type annotated.
  • Make your codebase modular and scalable with Piccolo apps (similar to Django apps).


The syntax is clean and expressive.

You can use it as a query builder:

# Select:
    Band.popularity > 100

# Join:

# Delete:
await Band.delete().where(
    Band.popularity < 1000

# Update:
await Band.update({Band.popularity: 10000}).where( == 'Pythonistas'

Or like a typical ORM:

# To create a new object:
b = Band(name='C-Sharps', popularity=100)

# To fetch an object from the database, and update it:
b = await Band.objects().get( == 'Pythonistas')
b.popularity = 10000

# To delete:
await b.remove()


Installing with PostgreSQL driver:

pip install 'piccolo[postgres]'

Installing with SQLite driver:

pip install 'piccolo[sqlite]'

Installing with all optional dependencies (easiest):

pip install 'piccolo[all]'

Building a web app?

Let Piccolo scaffold you an ASGI web app, using Piccolo as the ORM:

piccolo asgi new

Starlette, FastAPI, BlackSheep, Litestar, Esmerald and Lilya are currently supported.

Are you a Django user?

We have a handy page which shows the equivalent of common Django queries in Piccolo.


Our documentation is on Read the docs.

We also have some great tutorial videos on YouTube.