Created
December 18, 2019 01:13
-
-
Save Yuffster/178caf6eafddda9be3d0fb790a21eb72 to your computer and use it in GitHub Desktop.
sqlalchemy base model
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class DBModel(): | |
def save(self): | |
try: | |
s = get_session() | |
s.add(self) | |
s.commit() | |
except (sa.exc.IntegrityError): | |
raise x.ValidationError("Invalid data.") | |
def delete(self): | |
s = get_session() | |
s.delete(self) | |
s.commit() | |
@classmethod | |
def _query(cls, **kwargs): | |
s = get_session() | |
q = s.query(cls).filter_by(**kwargs) | |
return q | |
@classmethod | |
def first(cls, **kwargs): | |
return cls._query(**kwargs).first() | |
@classmethod | |
def list(cls, page=1, page_size=None, order_by=None, desc=False): | |
if page_size is None: | |
page_size = app.config.get('PAGE_SIZE', 10) | |
s = get_session() | |
q = s.query(cls) | |
if order_by is not None: | |
if desc is True: | |
order = sa.desc(order_by) | |
else: | |
order = order_by | |
q = q.order_by(order) | |
return ( | |
q.limit(page_size) | |
.offset(page_size*(page-1)) | |
.all() | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment