Awesome Open Source
Awesome Open Source


Build Status Documentation Status Language grade: Python Total alerts

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.


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().where( == 'Pythonistas').first().run()
b.popularity = 10000

# To delete:
await b.remove().run()


pip install piccolo

Building a web app?

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

piccolo asgi new

Starlette, FastAPI, and BlackSheep are currently supported.

Are you a Django user?

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


See Read the docs.

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
python (54,408
python3 (1,642
database (1,239
postgresql (743
orm (374
sqlite (318
asyncio (280
fastapi (72
query-builder (59
asgi (28
starlette (18