sqlalchemy:从表中选择“ QUERY”中的列

时间:2018-07-27 18:39:01

标签: python sqlalchemy

我遇到一种情况,当列值位于子查询中时,我试图计算表中的行数。例如,假设我有一些这样的sql:

select count(*) from table1
where column1 in (select column2 from table2);

我的表定义如下:

class table1(Base):
    __tablename__ = "table1"
    __table_args__ = {'schema': 'myschema'}
    acct_id = Column(DECIMAL(precision=15), primary_key=True)


class table2(Base):
    __tablename__ = "table2"
    __table_args__ = {'schema': 'myschema'}
    ban = Column(String(length=128), primary_key=True)

表是从数据库中反映出来的,因此存在其他未在类定义中明确指定的属性。

我可以尝试编写查询,但这是我遇到的困难...

qry=self.session.query(func.?(...)) # what to put here?
res = qry.one()

我尝试浏览文档here,但没有看到与'in'关键字类似的实现,这是许多SQL语言的功能。

如果重要的话,我正在使用Teradata作为后端。

1 个答案:

答案 0 :(得分:1)

sub_stmt = session.query(table2.some_id)
stmt = session.query(table1).filter(table1.id.in_(sub_stmt))
data = stmt.all()