我遇到一种情况,当列值位于子查询中时,我试图计算表中的行数。例如,假设我有一些这样的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作为后端。
答案 0 :(得分:1)
sub_stmt = session.query(table2.some_id)
stmt = session.query(table1).filter(table1.id.in_(sub_stmt))
data = stmt.all()