@toddbarry

Как в Gino достать из базы все строки, у которых id совпадает с одним из значений в списке с использованием async for?

Мне необходимо доставать из базы все строки, у которых id совпадает с одним из значений в изначально заданном списке. Список может быть достаточно большим, поэтому отправка запросов последовательно к базе - плохой вариант. В связи с этим мне необходимо использовать
async for Table.select('ids').where(Table.id in spisok).gino.iterate():

Однако метод where не понимает подобного синтаксиса, а в официальном руководстве не получилось найти способа реализовать подобное.
Другой способ - запуск отправки запросов через asyncio.as_completed() приводит к ошибке asyncpg:
asyncpg.exceptions._base.InterfaceError: cannot perform operation: another operation is in progress


В целом мне необходимо доставать из таблицы все значения столбца ids в тех строках, в которых id совпадает с одним из значений списка spisok, затем формировать из полученных значений ids новый список и повторять операцию для него.
Если бы как-то можно было попросить базу одним запросом проделать подобные итерации - это было бы наилучшим выходом в моей ситуации, однако не получается найти подобных примеров.

Прошу помощи с реализацией данной задачи
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ответы на вопрос 1
@toddbarry Автор вопроса
Обнаружил метод Table.id.in_(spisok)
Все работает хорошо. Поэтому вопрос теперь сводится только к этому
В целом мне необходимо доставать из таблицы все значения столбца ids в тех строках, в которых id совпадает с одним из значений списка spisok, затем формировать из полученных значений ids новый список и повторять операцию для него.
Если бы как-то можно было попросить базу одним запросом проделать подобные итерации - это было бы наилучшим выходом в моей ситуации, однако не получается найти подобных примеров.


И прошу оценки использования Table.id.in_(spisok) - это хороший подход?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Collectly Москва
от 3 500 usd.
áxmit Петрозаводск
от 60 000 до 120 000 руб.
20 янв. 2019, в 22:33
30000 руб./за проект
20 янв. 2019, в 22:03
1000 руб./за проект