一个用于web的通用crud框架。
pycurd的Python项目详细描述
积脓
一个用于web的通用crud框架。在
项目移动到https://pypi.org/project/pycrud/
特点:
- 在
通过json或dsl生成查询
在 - 在
基于角色的权限系统
在 - 在
易于与web框架集成
在 - 在
测试覆盖范围
在
示例:
定义
fromtypingimportOptionalfromplayhouse.db_urlimportconnectfrompycurd.crud.ext.peewee_crudimportPeeweeCrudfrompycurd.typesimportRecordMappingclassUser(RecordMapping):id:Optional[int]nickname:strusername:strpassword:str='password'db=connect("sqlite:///:memory:")c=PeeweeCrud(None,{User:'users'},db)
创建
^{pr2}$读取
frompycurd.queryimportQueryInfo# from dsllst=awaitc.get_list(QueryInfo.from_table_raw(User,where=[User.id!=1]))# from jsonlst=awaitc.get_list(QueryInfo.from_json(User,{'id.eq':1}))print([x.to_dict()forxinlst])
更新
frompycurd.queryimportQueryInfofrompycurd.valuesimportValuesToWritev=ValuesToWrite({'nickname':'bbb','username':'u2'})# from dsllst=awaitc.update(QueryInfo.from_table_raw(User,where=[User.id.in_([1,2,3])]))# from jsonlst=awaitc.update(QueryInfo.from_json(User,{'id.in':[1,2,3]}),v)print(lst)
删除
frompycurd.queryimportQueryInfolst=awaitc.delete(QueryInfo.from_json(User,{'id.in':[1,2,3]}))print(lst)
json查询
frompycurd.queryimportQueryInfo# $or: (id < 3) or (id > 5)QueryInfo.from_json(User,{'$or':{'id.lt':3,'id.gt':5}})# $and: 3 < id < 5QueryInfo.from_json(User,{'$and':{'id.gt':3,'id.lt':5}})# $not: not (3 < id < 5)QueryInfo.from_json(User,{'$not':{'id.gt':3,'id.lt':5}})# multiple same operator: (id == 3) or (id == 4) or (id == 5)QueryInfo.from_json(User,{'$or':{'id.eq':3,'id.eq.2':4,'id.eq.3':5,}})# multiple same operator: (3 < id < 5) or (10 < id < 15)QueryInfo.from_json(User,{'$or':{'$and':{'id.gt':3,'id.lt':5},'$and.2':{'id.gt':10,'id.lt':15}}})
DSL查询
# $or: (id < 3) or (id > 5)(User.id<3)|(User.id>5)# $and: 3 < id < 5(User.id>3)&(User.id<5)# $not: not (3 < id < 5)~((User.id>3)&(User.id<5))# multiple same operator: (id == 3) or (id == 4) or (id == 5)(User.id!=3)|(User.id!=4)|(User.id!=5)# multiple same operator: (3 < id < 5) or (10 < id < 15)((User.id>3)&(User.id<5))|((User.id>10)&(User.id<15))
操作员
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, } } }
- 项目
标签: