Я хочу сделать запрос, подобный этому (я не уверен, как он будет выглядеть даже в 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, который дает мне самое новое, насколько я знаю. Любые предложения приветствуются.