Skip to main content

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:

  • 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).

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:

piccolo asgi new

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

Piccolo ecosystem

Piccolo Admin

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.

Piccolo API

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.

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.

Metadata

Release files for piccolo 1.38.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for piccolo 1.38.0
File Size Uploaded Provenance
piccolo-1.38.0.tar.gz 309.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for piccolo 1.38.0
File Interpreter ABI Platform
piccolo-1.38.0-py3-none-any.whl Python 3 none any Details

Total release size: 742.5 kB

Release files / piccolo-1.38.0.tar.gz

Download URL piccolo-1.38.0.tar.gz
Size 309.2 kB
Tags Source
SHA-256 checksum
How to use checksums
3a6456fb767202baffecf62aa1d9fe22885aa28db3214d5dfb9fa8a48197abd6
BLAKE2b-256 checksum
How to use checksums
2378011e5f933c0d9c08431c72d5400d6b75a23b1f1477fc9a0473f0f47735df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.13.3 readme-renderer/46.0 requests/2.34.2 requests-toolbelt/1.0.0 urllib3/2.8.0 tqdm/4.70.1 importlib-metadata/9.0.1 keyring/25.7.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.13.16

Release files / piccolo-1.38.0-py3-none-any.whl

Download URL piccolo-1.38.0-py3-none-any.whl
Size 433.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b6e9950743f58070fde69082d9bbdb8cc4856f2a1c32040967dc993d63d417f1
BLAKE2b-256 checksum
How to use checksums
133c4739861155e3641ad618555f1f97139bbca0fc1a7bb8f104c30b71e0641b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.13.3 readme-renderer/46.0 requests/2.34.2 requests-toolbelt/1.0.0 urllib3/2.8.0 tqdm/4.70.1 importlib-metadata/9.0.1 keyring/25.7.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.13.16

Security for piccolo 1.38.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.38.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page