GitHub - piccolo-orm/piccolo: A fast, user friendly ORM and query builder which supports asyncio. (original) (raw)

Logo

Tests Release Documentation Status PyPI codecov

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

Features

Some of it’s stand out features are:

Syntax

The syntax is clean and expressive.

You can use it as a query builder:

Select:

await Band.select( Band.name ).where( Band.popularity > 100 )

Join:

await Band.select( Band.name, Band.manager.name )

Delete:

await Band.delete().where( Band.popularity < 1000 )

Update:

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

Or like a typical ORM:

To create a new object:

b = Band(name='C-Sharps', popularity=100) await b.save()

To fetch an object from the database, and update it:

b = await Band.objects().get(Band.name == 'Pythonistas') b.popularity = 10000 await b.save()

To delete:

await b.remove()

Installation

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:

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

Are you a Django user?

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

Documentation

Our documentation is on Read the docs.

We also have some great tutorial videos on YouTube.