sqlalchemy: выберите из таблицы, где столбец в QUERY

1

У меня есть ситуация, когда я пытаюсь подсчитать количество строк в таблице, когда значение столбца находится в подзапросе. Например, скажем, что у меня есть несколько 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()

Я попытался просмотреть документацию здесь, но я не вижу сопоставимой реализации ключевого слова 'in', которое является особенностью многих диалектов SQL.

Я использую Teradata в качестве моего бэкэнда, если это имеет значение.

Теги:
sqlalchemy

1 ответ

1
Лучший ответ
sub_stmt = session.query(table2.some_id)
stmt = session.query(table1).filter(table1.id.in_(sub_stmt))
data = stmt.all()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню