| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- from datetime import datetime
- from sqlalchemy import Column, String, Integer, DateTime
- from sqlalchemy.ext.asyncio import AsyncAttrs
- from sqlalchemy.orm import DeclarativeBase
- class Base(AsyncAttrs, DeclarativeBase):
- pass
- class BaseModel(Base):
- """基础模型类,包含id字段"""
- __abstract__ = True
- id = Column(Integer, primary_key=True, autoincrement=True, comment="主键")
- @classmethod
- def to_dict(cls):
- """
- 将模型对象转换为字典
- :return: 字典
- """
- return {c.name: getattr(cls, c.name) for c in cls.__table__.columns()}
- @classmethod
- def from_dict(cls, data: dict):
- """
- 将字典转换为模型对象
- :param data: 字典
- :return: 模型对象
- """
- for key, value in data.items():
- setattr(cls, key, value)
- return cls
- def update(self, data: dict):
- """
- 从字典更新模型属性
- :param data: 包含更新数据的字典
- """
- for key, value in data.items():
- if hasattr(self, key):
- setattr(self, key, value)
- class CreateModelBase(BaseModel):
- __abstract__ = True
- create_by = Column(String(64), default="", comment="创建者")
- create_time = Column(DateTime, comment="创建时间", default=datetime.now())
- pass
- class UpdateModelBase(CreateModelBase):
- __abstract__ = True
- update_by = Column(String(64), default="", comment="更新者")
- update_time = Column(DateTime, comment="更新时间", default=datetime.now())
- pass
- class SoftDeleteModelBase(BaseModel):
- """软删除模型类"""
- __abstract__ = True
- is_del = Column(Integer, default=0, comment="删除标志(0代表存在 1代表删除)")
- deleted_by = Column(String(64), default=None, comment="删除者")
- deleted_time = Column(DateTime, default=None, comment="删除时间")
- class FullModelBase(UpdateModelBase, SoftDeleteModelBase):
- __abstract__ = True
- pass
- class OrderModelBase(Base):
- __abstract__ = True
- order_num = Column(Integer, default=0, comment="显示顺序")
- pass
|