from flask_sqlalchemy import SQLAlchemy from sqlalchemy import Column from sqlalchemy import Integer from sqlalchemy.ext.declarative import as_declarative from sqlalchemy.ext.declarative import declared_attr @as_declarative() class BaseModel: """This class provides helper methods that can be used by its subclasses""" id = Column(Integer, primary_key=True) @declared_attr def __tablename__(cls): return cls.__name__.lower() def save(self): db.session.add(self) db.session.commit() return self def delete(self): db.session.delete(self) db.session.commit() @classmethod def get_all(cls): return cls.query.all() def __repr__(self): return f"<{self.__class__.__name__} {self.name!r}>" def session_commit(): """Shortcut for ``db.session.commit()``""" db.session.commit() db = SQLAlchemy(model_class=BaseModel)