我通过SQLAlchemy从所有引用的表中提取一个表行和相应的行。在
给定以下对象结构:
class DNAExtractionProtocol(Base):
__tablename__ = 'dna_extraction_protocols'
id = Column(Integer, primary_key=True)
code = Column(String, unique=True)
name = Column(String)
sample_mass = Column(Float)
mass_unit_id = Column(String, ForeignKey('measurement_units.id'))
mass_unit = relationship("MeasurementUnit", foreign_keys=[mass_unit_id])
digestion_buffer_id = Column(String, ForeignKey("solutions.id"))
digestion_buffer = relationship("Solution", foreign_keys=[digestion_buffer_id])
digestion_buffer_volume = Column(Float)
digestion_id = Column(Integer, ForeignKey("incubations.id"))
digestion = relationship("Incubation", foreign_keys=[digestion_id])
lysis_buffer_id = Column(String, ForeignKey("solutions.id"))
lysis_buffer = relationship("Solution", foreign_keys=[lysis_buffer_id])
lysis_buffer_volume = Column(Float)
lysis_id = Column(Integer, ForeignKey("incubations.id"))
lysis = relationship("Incubation", foreign_keys=[lysis_id])
proteinase_id = Column(String, ForeignKey("solutions.id"))
proteinase = relationship("Solution", foreign_keys=[proteinase_id])
proteinase_volume = Column(Float)
inactivation_id = Column(Integer, ForeignKey("incubations.id"))
inactivation = relationship("Incubation", foreign_keys=[inactivation_id])
cooling_id = Column(Integer, ForeignKey("incubations.id"))
cooling = relationship("Incubation", foreign_keys=[cooling_id])
centrifugation_id = Column(Integer, ForeignKey("incubations.id"))
centrifugation = relationship("Incubation", foreign_keys=[centrifugation_id])
volume_unit_id = Column(String, ForeignKey('measurement_units.id'))
volume_unit = relationship("MeasurementUnit", foreign_keys=[volume_unit_id])
我正在使用:
^{pr2}$这给了我:
^{3}$这确实包含了我想要的所有列,但是命名并不能帮助我选择我想要的。在
是否可以在此数据帧中保留原始表中的键名?e、 我想要measurement_units_1_code
而不是measurement_units_1_code
。在
这不是
joinedload
应该用来做什么的。在本例中,您希望执行显式join
:如果不想键入所有这些名称,可以检查
^{pr2}$DNAExtractionProtocol
类来查找所有关系并动态构造查询和标签。例如:编辑:根据您的数据结构,您可能需要在最后一行使用}。
outerjoin
而不是{你可能需要根据自己的喜好调整一下。例如,这没有考虑到潜在的命名冲突,例如对于}?在
mass_unit_id
,它是DNAExtractionProtocol.mass_unit_id
还是{此外,您可能希望执行
sql_query.statement
,而不是str(sql_query)
。str(sql_query)
用于打印目的,而不是用于执行。如果使用sql_query.statement
,我相信您不需要传递params=[code]
,因为code
已经绑定到查询中的适当参数。在相关问题 更多 >
编程相关推荐