Source code for simpleml.persistables.base_sqlalchemy

'''
Base class for sqlalchemy
'''

__author__ = 'Elisha Yadgaran'


from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, DateTime, func
from sqlalchemy_mixins import AllFeaturesMixin


Base = declarative_base()


[docs]class BaseSQLAlchemy(Base, AllFeaturesMixin): ''' Base class for all SimpleML database objects. Defaults to PostgreSQL but can be swapped out for any supported SQLAlchemy backend. Takes advantage of sqlalchemy-mixins to enable active record operations (TableModel.save(), create(), where(), destroy()) Added some inheritable convenience methods ------- Schema ------- created_timestamp: Server time on insert modified_timestamp: Server time on update ''' __abstract__ = True created_timestamp = Column(DateTime(timezone=True), nullable=False, server_default=func.now()) modified_timestamp = Column(DateTime(timezone=True), server_onupdate=func.now())
[docs] @classmethod def filter(cls, *filters): return cls._session.query(cls).filter(*filters)
[docs] @classmethod def query_by(cls, *queries): return cls._session.query(*queries)