4kpt_IIIЕсли по ID есть индекс (а он должен быть у нормальных людей), то задача поиска макимума/минимума тривиальна - это первый и последний элементы индекса.
Не дочитал Тогда действительно хорошее решение. Интересно, насколько поиск максимального и минимального значения затратный.
FishHook
Если по ID есть индекс (а он должен быть у нормальных людей)
FishHook
то задача поиска максимума/минимума тривиальна - это первый и последний элементы индекса.
rows = session.query(TableName).filter(TableName.category_id == 1).all() id_list = [] for idents in rows: id_list.append(idents.id) row = session.query(TableName).filter(TableName.id == random.choice(id_list)).one()
min_max_rows = session.query(func.min(TableName.id), func.max(TableName.id)).filter(TableName.category_id == 1).limit(2) integer = list(min_max_rows[0]) rand_int = random.randint(integer[0], integer[1]) random_row = session.query(TableName).filter(TableName.id >= rand_int, TableName.category_id == category_id).limit(1)