database_models.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. ModelParameters: Mapped[List['ModelParameters']] = relationship('ModelParameters', back_populates='Models_')
  27. class CurrentReduce(Base):
  28. __tablename__ = 'current_reduce'
  29. id: Mapped[int] = mapped_column(Integer, primary_key=True)
  30. Q_over_b: Mapped[float] = mapped_column(Float)
  31. pH: Mapped[float] = mapped_column(Float)
  32. OM: Mapped[float] = mapped_column(Float)
  33. CL: Mapped[float] = mapped_column(Float)
  34. H: Mapped[float] = mapped_column(Float)
  35. Al: Mapped[float] = mapped_column(Float)
  36. class CurrentReflux(Base):
  37. __tablename__ = 'current_reflux'
  38. id: Mapped[int] = mapped_column(Integer, primary_key=True)
  39. OM: Mapped[float] = mapped_column(Float)
  40. CL: Mapped[float] = mapped_column(Float)
  41. CEC: Mapped[float] = mapped_column(Float)
  42. H_plus: Mapped[float] = mapped_column(Float)
  43. HN: Mapped[float] = mapped_column(Float)
  44. Al3_plus: Mapped[float] = mapped_column(Float)
  45. Free_alumina: Mapped[float] = mapped_column(Float)
  46. Free_iron_oxides: Mapped[float] = mapped_column(Float)
  47. Delta_pH: Mapped[float] = mapped_column(Float)
  48. class ModelParameters(Base):
  49. __tablename__ = 'ModelParameters'
  50. ParamID: Mapped[int] = mapped_column(Integer, primary_key=True)
  51. ModelID: Mapped[int] = mapped_column(ForeignKey('Models.ModelID'))
  52. ParamName: Mapped[str] = mapped_column(Text)
  53. ParamValue: Mapped[str] = mapped_column(Text)
  54. Models_: Mapped['Models'] = relationship('Models', back_populates='ModelParameters')