Обновить строку из запроса, которая возвращает несколько строк - PullRequest
0 голосов
/ 27 марта 2020

У меня есть запрос, который возвращает статус и количество. Например,

[ ('pending', 10), ('processing', 1), ('complete', 57) ]

Я хочу взять результат этого запроса и обновить таблицу со счетчиками. Но я не хочу запрашивать базу данных несколько раз. Я хотел бы выполнить эту операцию в одном запросе.

Возможно ли это? Есть ли способ заставить мой запрос подсчета возвращаться в одной строке?


Мой запрос подсчета:

query = db.session.query(
    EnvelopeModel.status,
    sa.func.count(EnvelopeModel.id)
).filter(
    sa.or_(
        EnvelopeModel.status.in_(['complete', 'pending']),
        sa.and_(
            EnvelopeModel.status == 'processing',
            EnvelopeModel.id.in_(sa
                .select([CallModel.envelope_id])
                .where(CallModel.hold.is_(True))
                .group_by(CallModel.envelope_id)
            )
        )
    )
).group_by(EnvelopeModel.status)

Мой теоретический запрос на обновление:

update engagement set count_pending=X, count_processing=Y, count_complete=Z
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...