Skip to content

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

License

Notifications You must be signed in to change notification settings

hipertracker/piccolo

Repository files navigation

Piccolo

Build Status Coverage Status Documentation Status Language grade: Python Total alerts

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.

The syntax is clean and expressive.

# 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.band_members == 0) | (Band.manager.status == 'disabled')
).run()

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

Installation

pip install piccolo

Building a web app?

Let Piccolo scaffold you an ASGI web app, using Piccolo as the ORM:

piccolo asgi new

Starlette and FastAPI are currently supported.

Documentation

See Read the docs.

About

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

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 97.9%
  • Jinja 1.8%
  • Other 0.3%