我想做一个像这样的查询(我不确定它在SQL中看起来如何,所以我可能完全不依赖于这是否可能):
假设:
class Parent(Base):
__tablename__ = 'parent'
__table_args__ = {
UniqueConstraint("name", "version")
}
name = Column(String, primary_key=True)
parent = Column(JSONEncodedDict)
tags = relationship(ParentTags)
version = Column(Integer)
class ParentTags(Base)::
__tablename__ = 'parent_tags'
__table_args__ = {
UniqueConstraint("name", "tag"),
}
id = Column(Integer, Sequence("parent_tag_id_seq"), primary_key=True)
name = Column(String, ForeignKey("parent.name"))
tag = Column(String)
version = Column(Integer)
我想要这些查询:
所有父母按指定版本;如果我要求命名版本“生产”,那么只有父名称,版本元组,其中版本在标签表中,标签=“生产”。
所有父母按指定版本默认为最新版本;如果我要求一个名为“Production”的版本,那么如果一个名为Parent的版本存在“Production”版本,则返回该版本;如果没有,请返回最高版本。
根据版本,如果不存在此类版本,则返回最新版本。
我正在使用SQLAlchemy 0.7.4,据我所知,它给了我最新版本。欢迎任何建议。
答案 0 :(得分:2)
1:
session.query(Parent.name, Parent.version).\
join(ParentTag).\
filter(ParentTag.tag=='Production').\
all()
我在描述2和3中有点困惑。如果第一个ans适合你,请举例说明:)