database_models.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from typing import List, Optional
  2. from sqlalchemy import Column, Float, ForeignKey, Integer, String, TIMESTAMP, Table, Text, text
  3. from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
  4. import datetime
  5. class Base(DeclarativeBase):
  6. pass
  7. class Datasets(Base):
  8. __tablename__ = 'Datasets'
  9. Dataset_name: Mapped[str] = mapped_column(Text)
  10. Row_count: Mapped[int] = mapped_column(Integer)
  11. Dataset_type: Mapped[str] = mapped_column(Text)
  12. Dataset_ID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True)
  13. Dataset_description: Mapped[Optional[str]] = mapped_column(Text)
  14. Uploaded_at: Mapped[Optional[datetime.datetime]] = mapped_column(TIMESTAMP, server_default=text('CURRENT_TIMESTAMP'))
  15. Status: Mapped[Optional[str]] = mapped_column(Text, server_default=text("'pending'"))
  16. class Models(Base):
  17. __tablename__ = 'Models'
  18. ModelID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True)
  19. Model_name: Mapped[str] = mapped_column(Text, nullable=False)
  20. Model_type: Mapped[str] = mapped_column(Text, nullable=False)
  21. Created_at: Mapped[Optional[datetime.datetime]] = mapped_column(TIMESTAMP, server_default=text('CURRENT_TIMESTAMP'))
  22. Description: Mapped[Optional[str]] = mapped_column(Text)
  23. DatasetID: Mapped[Optional[int]] = mapped_column(Integer, ForeignKey('Datasets.Dataset_ID'))
  24. ModelFilePath: Mapped[Optional[str]] = mapped_column(Text)
  25. Data_type: Mapped[Optional[str]] = mapped_column(Text)
  26. Performance_score: Mapped[Optional[float]] = mapped_column(Float)
  27. # 新增评分指标字段
  28. MAE: Mapped[Optional[float]] = mapped_column(Float)
  29. RMSE: Mapped[Optional[float]] = mapped_column(Float)
  30. CV_score: Mapped[Optional[float]] = mapped_column(Float)
  31. ModelParameters: Mapped[List['ModelParameters']] = relationship('ModelParameters', back_populates='Models_')
  32. class CurrentReduce(Base):
  33. __tablename__ = 'current_reduce'
  34. id: Mapped[int] = mapped_column(Integer, primary_key=True)
  35. Q_over_b: Mapped[float] = mapped_column(Float)
  36. pH: Mapped[float] = mapped_column(Float)
  37. OM: Mapped[float] = mapped_column(Float)
  38. CL: Mapped[float] = mapped_column(Float)
  39. H: Mapped[float] = mapped_column(Float)
  40. Al: Mapped[float] = mapped_column(Float)
  41. class CurrentReflux(Base):
  42. __tablename__ = 'current_reflux'
  43. id: Mapped[int] = mapped_column(Integer, primary_key=True)
  44. OM: Mapped[float] = mapped_column(Float)
  45. CL: Mapped[float] = mapped_column(Float)
  46. CEC: Mapped[float] = mapped_column(Float)
  47. H_plus: Mapped[float] = mapped_column(Float)
  48. N: Mapped[float] = mapped_column(Float)
  49. Al3_plus: Mapped[float] = mapped_column(Float)
  50. Delta_pH: Mapped[float] = mapped_column(Float)
  51. class ModelParameters(Base):
  52. __tablename__ = 'ModelParameters'
  53. ParamID: Mapped[int] = mapped_column(Integer, primary_key=True)
  54. ModelID: Mapped[int] = mapped_column(ForeignKey('Models.ModelID'))
  55. ParamName: Mapped[str] = mapped_column(Text)
  56. ParamValue: Mapped[str] = mapped_column(Text)
  57. Models_: Mapped['Models'] = relationship('Models', back_populates='ModelParameters')