Model

Model 类是一切的开始,是一切 model class 的基类。

用法可参照「快速开始」里的 例子

类属性

__table_name__

表名, 一般不需要用户自己指定, OLO 会根据 class_name 自动推导出来:

class FooBar(BaseModel):
    pass

assert FooBar.__table_name__ == 'foo_bar'

query

返回 Query 对象, 只能通过 Options.query_class 设置

cache

返回 CacheWrapper 对象, 只能通过 Options.cache_class 设置

类方法

create

创建一个对象

函数签名: def create(cls, **attrs):

参数:

返回值:

Model; 创建完的 model class 实例

用法:

dummy = Dummy.create(name='foo', age=12)

get

通过 id 获得一个对象

函数签名: def get(cls, id=None, **kwargs):

参数:

返回值:

Model; 此 model class 的实例

用法:

dummy = Dummy.get(1)

gets

通过 id 列表批量获得多个对象

函数签名: def gets(cls, idents, filter_none=True):

参数:

返回值:

[Model]; 此 model class 的实例的列表

用法:

dummys = Dummy.gets([1, 2, 3])

get_by

通过查询条件获得一个对象

函数签名: def get_by(cls, *expressions, **expression_dict):

参数:

返回值:

Model; 此 model class 的实例

用法:

dummy = Dummy.get_by(age=12)

参数可以传 expression 列表来进行复杂的查询:

dummy = Dummy.get_by(Dummy.age > 12, name='foo')

gets_by

通过查询条件批量获得多个对象

函数签名: def gets_by(cls, *expressions, **expression_dict):

参数:

返回值:

[Model]; 此 model class 的实例的列表

用法:

dummys = Dummy.gets_by(age=12)

参数可以传 expression 列表来进行复杂的查询:

dummys = Dummy.gets_by(Dummy.age > 12, name='foo')

get_entities_by

通过查询条件批量获得某些字段

函数签名: def get_entities_by(cls, entities, *expressions, **expression_dict)

参数:

返回值:

[object]; 字段列表

用法:

res = Dummy.get_entities_by(['id', 'name'], age=3)  # [(1, 'foo'), (2, 'bar')]

count_by

获得符合此查询条件的数量

函数签名: def count_by(cls, *expressions, **expression_dict):

参数:

返回值:

int; 符合此查询条件的数量

用法:

count = Dummy.count_by(age=12)

实例方法

update

更新实例

函数签名: def update(self, **attrs):

参数:

返回值:

bool; `True` 为更新成功, `False` 为更新失败

用法:

dummy.update(name='foo', age=1)

save

保存未入库的更新

model 实例的赋值操作在 save 之前都不会入库, 只会标记为 dirty fields

函数签名: def save(self):

返回值:

bool; `True` 为更新成功, `False` 为更新失败

用法:

dummy.name = 'foo'
dummy.age = 12
# 赋值未入库, dummy 的 dirty fields 为 {'name', 'age'}
dummy.save()
# 赋值已入库, dummy 的 dirty fields 为 {}

delete

删除 model 实例

函数签名: def delete(self):

返回值:

bool; `True` 为删除成功, `False` 为删除失败

用法:

dummy.delete()

to_dict

导出 dict

函数签名:

def to_dict(self, excludes=None, parsers=None,
            type_parsers=None, jsonize=False):

参数:

dummy = Dummy(name='foo', age=1)
dct = dummy.to_dict(parsers={'age': lambda x: x + 1})
assert dct == {'name': 'foo', 'age': 2}
dummy = Dummy(id=1, name='foo', age=2)
dct = dummy.to_dict(type_parsers={int: str})
assert dct == {'id': '1', 'name': 'foo', 'age': '2'}

返回值:

`dict`

用法:

dct = dummy.to_dict()

Hooks

hooks 的用法已经在 快速入门 介绍完毕了