Skip to main content

A fast, user friendly ORM and query builder which supports asyncio.

Project description

Piccolo

Tests Release Documentation Status PyPI Language grade: Python Total alerts codecov

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
).run()

# Join:
await Band.select(
    Band.name,
    Band.manager.name
).run()

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

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

Or like a typical ORM:

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

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

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

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, 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.

Documentation

Our documentation is on Read the docs.

We also have some great tutorial videos on YouTube.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

piccolo-0.52.0.tar.gz (160.5 kB view details)

Uploaded Source

Built Distribution

piccolo-0.52.0-py3-none-any.whl (258.5 kB view details)

Uploaded Python 3

File details

Details for the file piccolo-0.52.0.tar.gz.

File metadata

  • Download URL: piccolo-0.52.0.tar.gz
  • Upload date:
  • Size: 160.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.7.1 requests/2.26.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.12

File hashes

Hashes for piccolo-0.52.0.tar.gz
Algorithm Hash digest
SHA256 40ff4c69c04c01256fcfca08d141a1066abf5a1720dbe30151def0c27a580deb
MD5 b5710fcf2ef7632e91ca947f4ea69018
BLAKE2b-256 41a505b56894b189ff194ae0db3757a44b919df55b41ebc8dda5902feabf1a88

See more details on using hashes here.

File details

Details for the file piccolo-0.52.0-py3-none-any.whl.

File metadata

  • Download URL: piccolo-0.52.0-py3-none-any.whl
  • Upload date:
  • Size: 258.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.7.1 requests/2.26.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.12

File hashes

Hashes for piccolo-0.52.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2c0f159c49a08dbf1fe3799ffa4ff7742fbdd54ffec83b37a288a9590cc5c297
MD5 c3b5c072fc3bfb079d1e80eee2db915e
BLAKE2b-256 02d0381a707e3dd61b7a63afb58047c2991d2aa50d2bd6f294a47805575a818a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page