piccolo
A fast, user friendly ORM and query builder which supports asyncio.
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.8%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
A fast, user friendly ORM and query builder which supports asyncio.
Basic Info
- Host: GitHub
- Owner: piccolo-orm
- License: mit
- Language: Python
- Default Branch: master
- Homepage: https://piccolo-orm.com/
- Size: 4.39 MB
Statistics
- Stars: 1,677
- Watchers: 17
- Forks: 93
- Open Issues: 102
- Releases: 176
Topics
Metadata Files
README.md

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:
```python
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:
```python
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:
bash
pip install 'piccolo[postgres]'
Installing with SQLite driver:
bash
pip install 'piccolo[sqlite]'
Installing with all optional dependencies (easiest):
bash
pip install 'piccolo[all]'
Building a web app?
Let Piccolo scaffold you an ASGI web app, using Piccolo as the ORM:
bash
piccolo asgi new
Starlette, FastAPI, BlackSheep, Litestar, Esmerald, Lilya, Quart, Falcon and Sanic 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.
Owner
- Name: Piccolo
- Login: piccolo-orm
- Kind: organization
- Location: United Kingdom
- Twitter: piccolo_orm
- Repositories: 15
- Profile: https://github.com/piccolo-orm
GitHub Events
Total
- Create event: 33
- Release event: 12
- Issues event: 115
- Watch event: 239
- Member event: 1
- Issue comment event: 271
- Push event: 84
- Pull request event: 87
- Pull request review event: 96
- Pull request review comment event: 88
- Fork event: 7
Last Year
- Create event: 33
- Release event: 12
- Issues event: 115
- Watch event: 239
- Member event: 1
- Issue comment event: 271
- Push event: 84
- Pull request event: 87
- Pull request review event: 96
- Pull request review comment event: 88
- Fork event: 7
Committers
Last synced: 9 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Daniel Townsend | d****n@d****k | 1,545 |
| Daniel Townsend | d****d@w****k | 85 |
| sinisaos | s****s@g****m | 35 |
| Amin Alaee | m****e@g****m | 29 |
| ali sayyah | a****2@g****m | 13 |
| William Michael Short | 3****t | 6 |
| waldner | w****r | 4 |
| Dominic Dąbrowski | 4****3 | 3 |
| Jaroslaw Zabiello | h****r@g****m | 3 |
| Yasser Tahiri | y****9@g****m | 3 |
| Miguel Guthridge | h****q@o****u | 3 |
| William Michael Short | w****t@e****i | 3 |
| havk | j****5@g****m | 2 |
| dependabot[bot] | 4****] | 2 |
| backwardspy | B****y@g****m | 2 |
| Tiago Silva | t****a@g****m | 2 |
| Taylor Beever | t****r@g****m | 2 |
| Nathaniel Sabanski | s****n@g****m | 2 |
| Ethan | 4****s | 2 |
| Ali Eren Öztürk | o****n@g****m | 2 |
| Yannis Burkhalter | y****s@b****v | 2 |
| Sergey Sokolov | d****7@y****u | 1 |
| Kenneth Cheo | k****1@g****m | 1 |
| Compro Prasad | C****d | 1 |
| Spencer Churchill | s****e@d****m | 1 |
| StitiFatah | 6****h | 1 |
| WintonLi | l****i@h****m | 1 |
| Sarvesh Dwivedi | g****6@g****m | 1 |
| knguyen5 | 3****5 | 1 |
| Austin Riba | a****n@m****o | 1 |
| and 19 more... | ||
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 245
- Total pull requests: 320
- Average time to close issues: 6 months
- Average time to close pull requests: 18 days
- Total issue authors: 85
- Total pull request authors: 25
- Average comments per issue: 2.48
- Average comments per pull request: 1.75
- Merged pull requests: 248
- Bot issues: 0
- Bot pull requests: 3
Past Year
- Issues: 73
- Pull requests: 110
- Average time to close issues: 12 days
- Average time to close pull requests: 4 days
- Issue authors: 33
- Pull request authors: 9
- Average comments per issue: 1.78
- Average comments per pull request: 1.3
- Merged pull requests: 80
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- dantownsend (89)
- trondhindenes (11)
- Jacky56 (8)
- metakot (7)
- sinisaos (7)
- powellnorma (7)
- Forceres (5)
- devsarvesh92 (4)
- waldner (3)
- eddyg (3)
- dashsatish (3)
- sarvesh4396 (3)
- jessemcl-flwls (3)
- BezBartek (3)
- aabmets (3)
Pull Request Authors
- dantownsend (215)
- sinisaos (54)
- atkei (5)
- jrycw (4)
- haaavk (4)
- Skelmis (3)
- dependabot[bot] (3)
- waldner (2)
- northpowered (2)
- ArtsiomAntropau (2)
- sarvesh4396 (2)
- nVitius (2)
- splch (2)
- aarcex3 (2)
- tarsil (2)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 39,753 last-month
- Total docker downloads: 101,741
- Total dependent packages: 6
- Total dependent repositories: 66
- Total versions: 287
- Total maintainers: 1
- Total advisories: 2
pypi.org: piccolo
A fast, user friendly ORM and query builder which supports asyncio.
- Homepage: https://github.com/piccolo-orm/piccolo
- Documentation: https://piccolo-orm.readthedocs.io/en/latest/index.html
- License: MIT
-
Latest release: 1.28.0
published 7 months ago
Rankings
Maintainers (1)
Advisories (2)
Dependencies
- black ==22.3.0
- flake8 ==4.0.1
- ipdb ==0.13.9
- ipython >=7.31.1
- isort ==5.10.1
- mypy ==0.942
- pip-upgrader ==1.4.15
- slotscheck ==0.14.0
- twine ==3.8.0
- wheel ==0.37.1
- Sphinx ==4.4.0
- piccolo-theme >=0.3.0
- sphinx-autobuild ==2021.3.14
- viztracer ==0.15.0
- Jinja2 >=2.11.0
- black *
- colorama >=0.4.0
- inflection >=0.5.1
- pydantic >=1.6
- targ >=0.3.7
- typing-extensions >=3.10.0.0
- coveralls ==3.3.1
- pytest ==6.2.5
- pytest-cov ==3.0.0
- python-dateutil ==2.8.2
- actions/checkout v3 composite
- actions/setup-python v1 composite
- actions/checkout v3 composite
- actions/setup-python v3 composite
- codecov/codecov-action v1 composite
- postgres ${{ matrix.postgres-version }} docker