Код Senior SQLAlchemy 2.0 обновлено
Сколько запросов сделает selectinload
Условие
SQLAlchemy selectinload отправляет id родителей пачками (по умолчанию по 500 в одном IN). Напишите count_queries(parents, per_batch, depth_counts): основной запрос загружает parents объектов; затем для каждого уровня вложенных selectinload из списка depth_counts (число загруженных объектов на этом уровне, которые становятся родителями для следующего) выполняется ceil(родителей / per_batch) запросов. Для первого уровня родители это parents, для следующих это значение предыдущего уровня из depth_counts. Уровень без родителей запросов не делает. Верните общее число запросов.
Примеры
count_queries(100, 500, [300]) // 2
count_queries(1200, 500, [3000]) // 4
count_queries(1200, 500, [3000, 10]) // 10
Как подойти
Подсказки: 2
- На каждом уровне
ceil(родители / пачка)запросов. - Родители следующего уровня это объекты, загруженные на текущем.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.