shahf8604's picture
Generate Table Models and schema
41168ea
from datetime import datetime, date
from sqlalchemy import BigInteger, Column, DateTime, func
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.inspection import inspect
Base = declarative_base()
class BaseModel_(Base):
__abstract__ = True # This model should not be instantiated directly
__table_args__ = {"extend_existing": True} # Allow table extension
created = Column(DateTime, server_default=func.now(), nullable=False)
def to_dict(self, keys_not_to_include: list[str] = []) -> dict:
return {
c.key: (
getattr(self, c.key).isoformat()
if isinstance(getattr(self, c.key), (datetime, date))
else getattr(self, c.key)
)
for c in inspect(self).mapper.column_attrs
if c.key not in keys_not_to_include
}