A common crud framework for web.
Project description
pycrud
A common crud framework for web.
Features:
-
Generate query by json
-
Role based permission system
-
Easy to bind
-
Tested
Examples:
Define
from typing import Optional
from playhouse.db_url import connect
from pycurd.crud.ext.peewee_crud import PeeweeCrud
from pycurd.types import RecordMapping
class User(RecordMapping):
id: Optional[int]
nickname: str
username: str
password: str = 'password'
db = connect("sqlite:///:memory:")
c = PeeweeCrud(None, {
User: 'users'
}, db)
Create
from pycurd.values import ValuesToWrite
v = ValuesToWrite({'nickname': 'wwww', 'username': 'u2'})
lst = await c.insert_many(User, [v])
print(lst)
Read
from pycurd.query import QueryInfo
lst = await c.get_list(QueryInfo.from_json(User, {
'id.eq': 1
}))
print([x.to_dict() for x in lst])
Update
from pycurd.query import QueryInfo
from pycurd.values import ValuesToWrite
v = ValuesToWrite({'nickname': 'bbb', 'username': 'u2'})
lst = await c.update(QueryInfo.from_json(User, {
'id.in': [1,2,3]
}), v)
print(lst)
Delete
from pycurd.query import QueryInfo
lst = await c.delete(QueryInfo.from_json(User, {
'id.in': [1,2,3]
}))
print(lst)
Operators
type | operator | text |
---|---|---|
compare | EQ | ('eq', '==') |
compare | NE | ('ne', '!=') |
compare | LT | ('lt', '<') |
compare | LE | ('le', '<=') |
compare | GE | ('ge', '>=') |
compare | GT | ('gt', '>') |
relation | IN | ('in',) |
relation | NOT_IN | ('notin', 'not in') |
relation | IS | ('is',) |
relation | IS_NOT | ('isnot', 'is not') |
relation | PREFIX | ('prefix',) |
relation | CONTAINS | ('contains',) |
logic | AND | ('and',) |
logic | OR | ('or',) |
// usage:
{
'time.ge': 1,
'$or': {
'id.in': [1, 2, 3],
'$and': {
'time.ge': 100,
'time.le': 500,
}
}
}
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.
Source Distribution
pycurd-0.1.13.tar.gz
(20.1 kB
view hashes)
Built Distribution
pycurd-0.1.13-py3-none-any.whl
(25.4 kB
view hashes)