A rest query request args parser for peewee orm.
Project description
A rest query request args parser for peewee orm. like no-sql select style.(/?select=id,name,author{*}&id=gte.20&order=id.desc).
Installing
pip install peewee-rest-query
Test
python setup.py test
Usage
Usage:
> from peewee_rest_query import PeeweeQueryBuilder, PeeweeSerializer > class School(Model): id = PrimaryKeyField() name = CharField(max_length=100) > class Author(Model): id = PrimaryKeyField() name = CharField(max_length=50) age = IntegerField(default=0) school = ForeignKeyField(School) > class Book(Model): id = PrimaryKeyField() name = CharField(max_length=255) author = ForeignKeyField(Author) > args = { 'select': 'id,name,author{id,name,school{*}}', 'id': 'gte.20', 'author.id': 'in.10,20,30,40,50', 'order': 'id.desc', 'page': 1, 'limit': 5 } > builder = PeeweeQueryBuilder(Book, args) > builder.select [<class '__main__.School'>, <peewee.PrimaryKeyField object>, <peewee.CharField object>, <peewee.PrimaryKeyField object>, <peewee.CharField object>] > build.where [<peewee.Expression object>, <peewee.Expression object>] > builder.order [<peewee.PrimaryKeyField object>] > builder.paginate (1, 5) > builder.build() <class '__main__.Book'> SELECT "t3"."id", "t3"."name", "t2"."id", "t2"."name", "t1"."id", "t1"."name" FROM "book" AS t1 INNER JOIN "author" AS t2 ON ("t1"."author_id" = "t2"."id") INNER JOIN "school" AS t3 ON ("t2"."school_id" = "t3"."id") WHERE (("t1"."id" >= ?) AND ("t2"."id" IN (?, ?, ?, ?, ?))) ORDER BY "t1"."id" DESC LIMIT 5 OFFSET 0 [20, 10, 20, 30, 40, 50]
License
MIT
Contacts
Email: huiquanxiong@gmail.com
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.