from sqlalchemy.ext.declarative import declarative_base, declared_attr from sqlalchemy.orm import Mapped, mapped_column import datetime Base = declarative_base() class DbCommon(Base): __abstract__ = True id: Mapped[int] = mapped_column(primary_key=True) create_time: Mapped[datetime.datetime] = mapped_column(default=datetime.datetime.utcnow()) update_time: Mapped[datetime.datetime] = mapped_column(default=datetime.datetime.utcnow(), onupdate=datetime.datetime.utcnow()) def keys(self): return ["id", "create_time", "update_time"] @declared_attr def __tablename__(cls): return cls.__name__.lower()