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]'

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.45.1.tar.gz (146.8 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.45.1-py3-none-any.whl (237.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: piccolo-0.45.1.tar.gz
  • Upload date:
  • Size: 146.8 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.45.1.tar.gz
Algorithm Hash digest
SHA256 4d7cd90c96eabc9d5d2e6379ab6e46664fdc99b64591b2ceff686fdf9e237691
MD5 50ddd6de6ea4146bc76dd1ebbd13978a
BLAKE2b-256 31ed73fd69ae0bd5157f17ae18bad51942ffb100b44f4a13892f86b78d424475

See more details on using hashes here.

File details

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

File metadata

  • Download URL: piccolo-0.45.1-py3-none-any.whl
  • Upload date:
  • Size: 237.8 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.45.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e2e7e7387409a7f9985a3cb6aa0f58934e3afe60aeb7f526eb9f2433a4fae645
MD5 3515076ea13d9bd3beba2cfb969d9165
BLAKE2b-256 e83e0d36c171b553d5f416fe074c7af390cd9a9b2f9444bb5923ae6c4f18da59

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