1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- from sqlalchemy import Column, Integer, Float
- from sqlalchemy import ForeignKeyConstraint
- from app.database import Base # 统一的基础模型
- class CropCdInputData(Base):
- """
- 作物镉预测模型输入数据模型
- 整合作物镉富集预测所需的15个关键参数:
- - 土壤颗粒组成(粉粒/砂粒/石砾)
- - 速效养分(钾、磷)
- - 重金属全量(铝、钙、铁、镁、锰)
- - 营养元素(氮、硫)
- - 有效态镉转换值(基于MSM输出计算)
- """
- __tablename__ = 'CropCd_input_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')
- # 土壤颗粒组成
- silt_content = Column('002_0002IDW', Float, nullable=True,
- comment='粉粒组分(0.002~0.02mm)质量占比[%]')
- sand_content = Column('02_002IDW', Float, nullable=True,
- comment='砂粒组分(0.02~0.2mm)质量占比[%]')
- gravel_content = Column('2_02IDW', Float, nullable=True,
- comment='石砾组分(>2mm)质量占比[%]')
- # 速效养分 (注意:数据库列名与实际含义的对应关系)
- available_potassium = Column('AvaP_IDW', Float, nullable=True,
- comment='速效钾(mg/kg)(对应Soil_data.AvaK_IDW)')
- available_phosphorus = Column('AvaK_IDW', Float, nullable=True,
- comment='有效磷(mg/kg)(对应Soil_data.AvaP_IDW)')
- slow_available_potassium = Column('SAvaK_IDW', Float, nullable=True,
- comment='缓效钾(mg/kg)')
- # 重金属全量
- total_aluminum = Column('TAl_IDW', Float, nullable=True,
- comment='全铝含量(%)')
- total_calcium = Column('TCa_IDW', Float, nullable=True,
- comment='全钙含量(%)')
- total_iron = Column('TFe_IDW', Float, nullable=True,
- comment='全铁含量(%)')
- total_magnesium = Column('TMg_IDW', Float, nullable=True,
- comment='全镁含量(%)')
- total_manganese = Column('TMn_IDW', Float, nullable=True,
- comment='全锰含量(mg/kg)')
- # 营养元素
- total_nitrogen = Column('TN_IDW', Float, nullable=True,
- comment='全氮含量(g/kg)')
- total_sulfur = Column('TS_IDW', Float, nullable=True,
- comment='全硫含量(g/kg)')
- # 有效态镉转换值
- ln_cd_solution = Column('solution', Float, nullable=True,
- comment='LN(POR_Layer/bd020_90 * 112000*Cd.solution)')
- # 复合外键约束
- __table_args__ = (
- ForeignKeyConstraint(
- ['Farmland_ID', 'Sample_ID'],
- ['Farmland_data.Farmland_ID', 'Farmland_data.Sample_ID']
- ),
- {'comment': '作物镉预测模型输入数据'}
- )
|