You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
926 B
40 lines
926 B
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)
|
|
|