query = session.query(columns)
if isinstance(columns, str):
query = query.select_from(cls)
else:
query = session.query(cls)
if order_by is not None:
if isinstance(order_by, (tuple, list)):
query = query.order_by(*order_by)
else:
query = query.order_by(order_by)
if offset:
query = query.offset(offset)
if limit:
query = query.limit(limit)
if lock_mode:
query = query.with_lockmode(lock_mode)
return query.all()
BaseModel.get_all = get_all
@classmethod
def count_all(cls, session, lock_mode=None):
query = session.query(func.count('*')).select_from(cls)
if lock_mode:
query = query.with_lockmode(lock_mode)
return query.scalar()
BaseModel.count_all = count_all
@classmethod
def exist(cls, session, id, lock_mode=None):
if hasattr(cls, 'id'):
query = session.query(func.count('*')).select_from(cls).filter(cls.id == id)
if lock_mode:
query = query.with_lockmode(lock_mode)
return query.scalar() > 0
return False
BaseModel.exist = exist
@classmethod
def set_attr(cls, session, id, attr, value):
if hasattr(cls, 'id'):
session.query(cls).filter(cls.id == id).update({










