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:
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()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]'Let Piccolo scaffold you an ASGI web app, using Piccolo as the ORM:
piccolo asgi newStarlette, FastAPI, BlackSheep, Litestar, Esmerald, Lilya, Quart, Falcon and Sanic are currently supported.
Piccolo Admin is a powerful admin interface / content management system for Python, built on top of Piccolo.
It was created at a design agency to serve the needs of customers who demand a high quality, beautiful admin interface for their websites. It's a modern alternative to tools like Wordpress and Django Admin.
It's built using the latest technologies, with Vue.js on the front end, and a powerful REST backend.
Some of it's standout features:
- Powerful data filtering
- Builtin security
- Multi-factor Authentication
- Media support, both locally and in S3 compatible services
- Dark mode support
- CSV exports
- Easily create custom forms
- Works on mobile and desktop
- Use standalone, or integrate with several supported ASGI frameworks
- Multilingual out of box
- Bulk actions, like updating and deleting data
- Flexible UI - only show the columns you want your users to see
You can read the docs here.
Utilities for easily exposing Piccolo tables as REST endpoints in ASGI apps, such as Starlette and FastAPI.
Includes a bunch of useful ASGI middleware:
- Session Auth
- Token Auth
- Rate Limiting
- CSRF
- Content Security Policy (CSP)
- And more
You can read the docs here.
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.
