piccolo

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

https://github.com/piccolo-orm/piccolo

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

asgi asyncio database fastapi hacktoberfest orm piccolo postgresql python python3 query-builder sqlite starlette

Keywords from Contributors

pydantic json-schema redoc sqlalchemy openapi3 python-types cookiecutter swagger-ui letsencrypt packaging
Last synced: 6 months ago · JSON representation

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
asgi asyncio database fastapi hacktoberfest orm piccolo postgresql python python3 query-builder sqlite starlette
Created over 7 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Security

README.md

Logo

Tests Release Documentation Status PyPI codecov

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

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

All Time
  • Total Commits: 1,778
  • Total Committers: 49
  • Avg Commits per committer: 36.286
  • Development Distribution Score (DDS): 0.131
Past Year
  • Commits: 114
  • Committers: 9
  • Avg Commits per committer: 12.667
  • Development Distribution Score (DDS): 0.184
Top Committers
Name Email 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...

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
enhancement (52) bug (15) testing (8) documentation (6) good first issue (3) proposal - input needed (2) typing (1) help wanted (1) low priority (1) research (1)
Pull Request Labels
enhancement (128) bug (38) documentation (23) testing (22) release (4) dependencies (3) new feature (1) proposal - input needed (1) help wanted (1)

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.

  • Versions: 287
  • Dependent Packages: 6
  • Dependent Repositories: 66
  • Downloads: 39,753 Last month
  • Docker Downloads: 101,741
Rankings
Dependent packages count: 1.4%
Dependent repos count: 1.8%
Stargazers count: 1.9%
Downloads: 2.0%
Average: 2.6%
Docker downloads count: 3.6%
Forks count: 5.0%
Maintainers (1)
Last synced: 6 months ago

Dependencies

requirements/dev-requirements.txt pypi
  • 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
requirements/doc-requirements.txt pypi
  • Sphinx ==4.4.0
  • piccolo-theme >=0.3.0
  • sphinx-autobuild ==2021.3.14
requirements/profile-requirements.txt pypi
  • viztracer ==0.15.0
requirements/requirements.txt pypi
  • 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
requirements/test-requirements.txt pypi
  • coveralls ==3.3.1
  • pytest ==6.2.5
  • pytest-cov ==3.0.0
  • python-dateutil ==2.8.2
.github/workflows/release.yaml actions
  • actions/checkout v3 composite
  • actions/setup-python v1 composite
.github/workflows/tests.yaml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • codecov/codecov-action v1 composite
  • postgres ${{ matrix.postgres-version }} docker
pyproject.toml pypi
requirements/readthedocs-requirements.txt pypi
setup.py pypi