# !/usr/bin/env python3 # -*- encoding : utf-8 -*- # @Filename : base_class.py # @Software : VSCode # @Datetime : 2021/11/04 21:27:43 # @Author : leo liu # @Version : 1.0 # @Description : import uuid from datetime import datetime from sqlalchemy import Column, Integer, DateTime from sqlalchemy.sql import func from sqlalchemy.ext.declarative import as_declarative, declared_attr @as_declarative() class Base: # 通用的字段 id = Column(Integer, unique=True, index=True, primary_key=True, autoincrement=True) create_time = Column(DateTime, default=datetime.now, server_default=func.now(), comment="创建时间") update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, server_default=func.now(), server_onupdate=func.now(), comment="更新时间") is_delete = Column(Integer, default=0, comment="逻辑删除:0=未删除,1=删除", server_default='0') __name__: str # Generate __tablename__ automatically @declared_attr def __tablename__(cls) -> str: import re # 如果没有指定__tablename__ 则默认使用model类名转换表名字 name_list = re.findall(r"[A-Z][a-z\d]*", cls.__name__) # 表名格式替换成 下划线_格式 如 MallUser 替换成 mall_user return "_".join(name_list).lower() def getAttrFromName(self, attrName): if hasattr(self, attrName): return getattr(self, attrName) else: return getattr(self, "id") def gen_uuid() -> str: # 生成uuid # https://stackoverflow.com/questions/183042/how-can-i-use-uuids-in-sqlalchemy?rq=1 return uuid.uuid4().hex