SQLAlchemy:选择嵌套列

问题描述 投票:0回答:1

我有以下模型和关联。 AA 可以有多个 BB,即 AA.bbs 是 BB 的列表。我只想从 AA 和 BB 中选择几列,即 AA 的名称和 BB 的名称、用户名。

aa2cc_association = Table(
        'aa2bbassociation',
        Base.metadata,
        Column('aa_id', Integer, ForeignKey(get_full_table_name(TABLE_FOLDER_NAME) + '.id'), primary_key=True),
        Column('username', Unicode(512), ForeignKey(get_full_table_name(TABLE_FOLDER_TEST_NAME) + '.username'), primary_key=True),
        **_tablekwargs)


class BB(Base):
    id = Column("id")
    name = Column("name")
    username = Column("username")


class AA(Base):
    id = Column("id")
    name = Column("name")
    bbs = relationship(BB, secondary=aa2cc_association, backref='folders', lazy="joined")

表AA

id    name 
1     aa1
2     aa2

表BB

id    name  username 
1     bb1    u1
2     bb2    u2

表aa2bb关联

aa_id username
1     u1    
1     u2   

我执行此查询

results = session.query(AA.id, AA.name, BB.name, BB.username).group_by(AA.name)

但它只返回一行。

返回结果表

AA.name  BB.name  BB.username
  aa1      bb1       u1
   

我期待这样的事情。我怎样才能得到这个?

   AA.id    AA.name  BB.name  BB.username
      1      aa1      bb1       u1
      1      aa1      bb2       u2
python sqlalchemy orm foreign-keys
1个回答
0
投票

尝试使用连接:

results = session.query(AA.id, AA.name, BB.name, BB.username).join(AA.bbs)

简单关系连接

© www.soinside.com 2019 - 2024. All rights reserved.