簡體   English   中英

在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)

我想要這些查詢:

  1. 所有父母按名稱版本; 如果我要求命名版本“生產”,那么只有父名稱,版本元組,其中版本在標簽表中,標簽=“生產”。

  2. 所有父母按命名版本默認為最新版本; 如果我要求一個名為“Production”的版本,那么如果一個名為Parent的版本存在“Production”版本,則返回該版本; 如果沒有,請返回最大版本。

  3. 如果不存在此類版本,則按版本的特定父級將回退到最新版本。

我正在使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM