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.

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().where(Band.name == 'Pythonistas').first().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]'

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

See Read the docs.

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.39.0.tar.gz (135.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

piccolo-0.39.0-py3-none-any.whl (223.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: piccolo-0.39.0.tar.gz
  • Upload date:
  • Size: 135.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.2 CPython/3.7.11

File hashes

Hashes for piccolo-0.39.0.tar.gz
Algorithm Hash digest
SHA256 32aeb1b1e771f0c0153dd0784044a283c25ee84244aea036b715a5e35a6148f6
MD5 cecd01cc4a97cc4a9c1a44c8cc10d783
BLAKE2b-256 768b8af01d845fe34a404331494f92b197672ac9dff480950484e6dd071fb01e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: piccolo-0.39.0-py3-none-any.whl
  • Upload date:
  • Size: 223.4 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.2 CPython/3.7.11

File hashes

Hashes for piccolo-0.39.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b054814150f75d630de7f6892c7e083bf43dfe2e7e13f66702178de6b9b6685d
MD5 305b2aaca88e8f191d93ca64736f0d4e
BLAKE2b-256 43adc13ebf27ede333712c1fd785901eb1a9d07c1455965bae0ba3314e7780b5

See more details on using hashes here.

Supported by

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