base.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. """
  2. 数据库模型基类
  3. """
  4. import sys
  5. import os
  6. from sqlalchemy import Column, String, DateTime, Boolean, func
  7. from sqlalchemy.dialects.mysql import CHAR
  8. from app.base import Base
  9. from datetime import datetime
  10. import uuid
  11. class BaseModel(Base):
  12. """数据库模型基类"""
  13. __abstract__ = True
  14. id = Column(CHAR(36), primary_key=True, default=lambda: str(uuid.uuid4()), comment="主键ID")
  15. created_by = Column(CHAR(36), nullable=True, comment="创建人")
  16. created_time = Column(DateTime, default=func.now(), comment="创建时间,默认当前时间")
  17. updated_by = Column(CHAR(36), nullable=True, comment="修改人")
  18. updated_time = Column(DateTime, default=func.now(), onupdate=func.now(), comment="修改时间,默认当前时间")
  19. def to_dict(self) -> dict:
  20. """转换为字典"""
  21. return {
  22. column.name: getattr(self, column.name)
  23. for column in self.__table__.columns
  24. }
  25. def update_from_dict(self, data: dict):
  26. """从字典更新属性"""
  27. for key, value in data.items():
  28. if hasattr(self, key):
  29. setattr(self, key, value)