我定义了以下对象和关系。这实际上是一个很简单的例子,我提供的所有这些领域仅仅是为了说明我为什么认为吸入麻醉和注射麻醉应该由两个不同的类别定义。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