from sqlalchemy import Column, Integer, Float, Text from sqlalchemy import ForeignKey, ForeignKeyConstraint from app.database import Base # 统一的基础模型 class MSMOutputData(Base): """ 络合模型输出数据模型 存储多表面模型(MSM)的计算结果 模型特点: 1. 每个记录唯一对应MSM输入数据模型 2. Cd.solution字段包含溶液中镉离子的关键计算结果 3. Var字段与输入模型保持一致便于溯源 """ __tablename__ = 'MSM_output_data' # 主键配置 id = Column('ID', Integer, primary_key=True, autoincrement=True) # 外键参考Farmland_data表 (复合外键) farmland_id = Column('Farmland_ID', Integer, nullable=False) sample_id = Column('Sample_ID', Integer, nullable=False) # 复合外键约束 __table_args__ = ( ForeignKeyConstraint( ['Farmland_ID', 'Sample_ID'], ['Farmland_data.Farmland_ID', 'Farmland_data.Sample_ID'] ), {'comment': '络合模型输出数据模型'} ) # 数据索引符 - 与输入模型对应 var = Column('Var', Text, nullable=False, comment='过程模型数据索引符,与MSM_input_data.Var一致') # 关键计算结果 - 溶液中镉离子浓度 cd_solution = Column('Cd.solution', Float, nullable=False, comment='镉离子浓度[mol/L]:络合模型核心计算结果')