piccolo1.22.0
piccolo1.22.0
Published
A fast, user friendly ORM and query builder which supports asyncio.
pip install piccolo
Package Downloads
Authors
Project URLs
Requires Python
>=3.9.0
Dependencies
- black
- colorama
>=0.4.0
- Jinja2
>=2.11.0
- targ
>=0.3.7
- inflection
>=0.5.1
- typing-extensions
>=4.3.0
- pydantic
[email]==2.*
- orjson
>=3.5.1; extra == "all"
- ipython
; extra == "all"
- asyncpg
>=0.30.0; extra == "all"
- aiosqlite
>=0.16.0; extra == "all"
- uvloop
>=0.12.0; sys_platform != "win32" and extra == "all"
- orjson
>=3.5.1; extra == "orjson"
- ipython
; extra == "playground"
- asyncpg
>=0.30.0; extra == "postgres"
- aiosqlite
>=0.16.0; extra == "sqlite"
- uvloop
>=0.12.0; sys_platform != "win32" and extra == "uvloop"
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, Esmerald and Lilya 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.