# -*- coding: utf-8 -*- from sqlalchemy import Column, Integer, String from sqlalchemy.ext.declarative import declared_attr, declarative_base class BaseModelMixin(object): @declared_attr def __tablename__(self): return self.__name__.lower() # __table_args__ = {'mysql_engine': 'InnoDB'} id = Column(Integer, primary_key=True) BaseModel = declarative_base(cls=BaseModelMixin) class MyMixin(object): @declared_attr def __tablename__(self): return self.__name__.lower() # __table_args__ = {'mysql_engine': 'InnoDB'} __mapper_args__= {'always_refresh': True} id = Column(Integer, primary_key=True) # example: class MyModel(MyMixin, BaseModel): name = Column(String(1000))