[英]How can I query specific child in multiple-level relationship table in SQLAlchemy
[英]In SQLAlchemy, how can I make this conditional query on a child relationship?
我想進行這樣的查詢(我不確定它在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,據我所知,它給了我最新版本。 歡迎任何建議。
答案1:
session.query(Parent.name, Parent.version).\
join(ParentTag).\
filter(ParentTag.tag=='Production').\
all()
我在描述2和3中有點混淆。如果第一個ans適合你,請舉例說明一些例子:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.