# app/models/effcd_output.py from sqlalchemy import Column, Integer, Float from sqlalchemy import ForeignKeyConstraint from app.database import Base # 统一的基础模型 class EffCdOutputData(Base): """ 有效态镉预测模型输出数据模型 存储预测模型计算的对数化有效态镉浓度,可通过指数函数还原为实际浓度: EffCd = exp(LnEffCd) [单位:mg/kg] 模型特点: - 通过Farmland_ID/Sample_ID与农田样点严格关联 - 核心输出字段需经指数转换获取物理意义值 - 可用于直接评估农田有效态镉污染水平 """ __tablename__ = 'EffCd_output_data' # 主键配置 id = Column('ID', Integer, primary_key=True, autoincrement=True, comment='自增主键') # 外键字段(关联农田样点) farmland_id = Column('Farmland_ID', Integer, nullable=False, comment='关联农地ID') sample_id = Column('Sample_ID', Integer, nullable=False, comment='关联样点ID') # 模型输出结果 ln_eff_cd = Column('LnEffCd', Float, nullable=False, comment='有效态镉浓度的自然对数值[ln(mg/kg)]') # 复合外键约束 __table_args__ = ( ForeignKeyConstraint( ['Farmland_ID', 'Sample_ID'], ['Farmland_data.Farmland_ID', 'Farmland_data.Sample_ID'] ), {'comment': '有效态镉预测模型输出数据'} ) # 转换方法:获取实际有效态镉浓度 def effective_cadmium(self): """ 计算实际有效态镉浓度(单位:mg/kg) 公式: EffCd = exp(LnEffCd) """ import math return math.exp(self.ln_eff_cd)