""" 数据库模型基类 """ from datetime import datetime from typing import Any, Dict from sqlalchemy import Column, DateTime, Integer from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.sql import func Base = declarative_base() class BaseModel(Base): """抽象基类,为所有模型提供通用字段""" __abstract__ = True id = Column(Integer, primary_key=True, index=True, autoincrement=True) created_time = Column(DateTime(timezone=True), server_default=func.now(), nullable=False, comment="创建时间") def to_dict(self, exclude: list = None) -> Dict[str, Any]: """ 将模型实例转换为字典 Args: exclude: 要排除的字段列表 Returns: 包含模型字段的字典 """ exclude = exclude or [] result = {} for column in self.__table__.columns: if column.name in exclude: continue value = getattr(self, column.name) # 处理特殊类型 if isinstance(value, datetime): value = value.isoformat() elif isinstance(value, bytes): value = value.hex() if value else None result[column.name] = value return result def update_from_dict(self, data: Dict[str, Any]) -> None: """ 从字典更新模型字段 Args: data: 包含要更新字段的字典 """ for key, value in data.items(): if hasattr(self, key) and key != 'id': setattr(self, key, value) def __repr__(self) -> str: """模型表示""" return f"<{self.__class__.__name__}(id={self.id})>"