assessment.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from sqlalchemy import Column, Integer, Float, ForeignKey
  2. from sqlalchemy.orm import relationship, backref
  3. from geoalchemy2 import Geometry
  4. from app.models.orm_models import Base
  5. from sqlalchemy import ForeignKeyConstraint
  6. class Assessment(Base):
  7. """评估数据表ORM模型"""
  8. __tablename__ = 'Assessment'
  9. # 主键字段(自增)
  10. id = Column('ID', Integer, primary_key=True, autoincrement=True, comment='自增主键')
  11. # 复合外键字段:关联Farmland_data表的联合主键(Farmland_ID和Sample_ID)
  12. farmland_id = Column('Farmland_ID', Integer, nullable=False, comment='关联Farmland_data表的Farmland_ID')
  13. sample_id = Column('Sample_ID', Integer, nullable=False, comment='关联Farmland_data表的Sample_ID')
  14. # 用地类型
  15. type = Column('Type', Float, nullable=True, comment='用地类型:旱地(0)、水田(1)、水浇地(2)')
  16. # 2023年三普镉含量
  17. idw_2023sp_cd = Column('IDW_2023SP_Cd', Float, nullable=True, comment='2023年三普Cd(mg/kg)')
  18. # 2023年三普pH值
  19. idw_2023sp_ph = Column('IDW_2023SP_pH', Float, nullable=True, comment='2023年三普pH')
  20. # 有机质含量
  21. som_idw = Column('SOM_IDW', Float, nullable=True, comment='有机质(g/kg)')
  22. # 安全生产风险阈值
  23. safety_production_threshold = Column('安全生产风险阈值', Float, nullable=True, comment='安全生产风险阈值')
  24. # 污染风险筛选值
  25. pollution_risk_screening_value = Column('污染风险筛选值', Float, nullable=True, comment='污染风险筛选值')
  26. # 设置复合外键约束(关联到Farmland_data表的联合主键)
  27. __table_args__ = (
  28. ForeignKeyConstraint(
  29. ['Farmland_ID', 'Sample_ID'],
  30. ['Farmland_data.Farmland_ID', 'Farmland_data.Sample_ID']
  31. ),
  32. {'comment': '评价数据表'}
  33. )
  34. # 注意:一个Assessment记录关联一个Farmland_data记录(通过复合主键)
  35. farmland_data = relationship("FarmlandData", backref="assessments")
  36. def __repr__(self):
  37. return f"<Assessment(id={self.id}, farmland_id={self.farmland_id}, sample_id={self.sample_id})>"