def get_db_object_by_attr(object_, **kwargs):
assert len(kwargs) >= 1, 'function get_db_object_by_attr need argument'
if 'ignore' in kwargs:
ignore = kwargs.pop('ignore')
else:
ignore = False
if len(kwargs) > 1:
filter_ = and_(*[getattr(object_, key) == value
for key, value in kwargs.iteritems()])
else:
key, value = kwargs.popitem()
filter_ = getattr(object_, key) == value
user = yield execute(sqls=[('query', object_),
('filter', filter_),
('first', None)])
if not user and not ignore:
raise gen.Return(invalid_argument_error('wrong %s' % key))
raise gen.Return(user)
评论列表
文章目录