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.database 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})>"