我定義了以下對象和關係。這實際上是一個很簡單的例子,我提供的所有這些領域僅僅是爲了說明我爲什麼認爲吸入麻醉和注射麻醉應該由兩個不同的類別定義。sqlalchemy中的多個/拆分類關聯
class InhalationAnesthesia(Base):
__tablename__ = "inhalation_anesthesias"
id = Column(Integer, primary_key=True)
anesthetic = Column(String)
concentration = Column(Float)
concentration_unit = Column(String)
duration = Column(Float)
duration_unit = Column(String)
class TwoStepInjectionAnesthesia(Base):
__tablename__ = "twostep_injection_anesthesias"
id = Column(Integer, primary_key=True)
anesthetic = Column(String)
solution_concentration = Column(Float)
solution_concentration_unit = Column(String)
primary_dose = Column(Float)
primary_rate = Column(Float)
primary_rate_unit = Column(String)
secondary_rate = Column(Float)
secondary_rate_unit = Column(String)
class Operation(Base):
__tablename__ = "operations"
id = Column(Integer, primary_key=True)
anesthesia_id = Column(Integer, ForeignKey('inhalation_anesthesias.id'))
anesthesia = relationship("InhalationAnesthesia", backref="used_in_operations")
我想,然而,要定義以這樣的方式,任何Operation
對象可以指向一個TwoStepInjectionAnesthesia
對象或InhalationAnesthesia
對象Operation
類的麻醉劑屬性。
我該怎麼做?
所以使用這個設置,我應該能夠在Operation.anesthesia下引用'吸氣麻醉'和'TwoStepInjectionAnesthesia'對象?會使用'Operation.anesthesia = [TwoStepInjectionAnesthesia(..),InhalationAnesthesia(..),Inhalationanesthesia(..)]'亂七八糟嗎? – TheChymera
@ TheChymera是和是。在提供的示例中,「Operation」實例將僅引用一個「麻醉」對象。如果你需要它是一個列表,你應該稍微改變一下代碼。 –
還有一件事,使用上述設置的好處是什麼(除了在python末尾稍微更好地組織)?將生成的實際SQL表包含某些列類型僅適用於具有某些discrminators的行? (從而節省磁盤空間?) – TheChymera