sqlalchemy from_self()

x·2021년 3월 24일
0
def __get_previous(
    self, limit: int
) -> List:
    query = query.filter(
        SomeModel.id == 1
    ).limit(limit)
    
    return query.from_self().order_by(VideoCallCaptureModel.id.desc()).all()

원하는 것

  1. 페이징을 할 때 이전 값들을 가져와야 했는데 최종 결과는 내림차순해야 한다.

방법

  1. 오름차순으로 정렬된 model들을 limit만큼 위에서부터 가져온다.
  2. model들을 내림차순 정렬한다.

오름차순으로 정렬하고 limit()으로 원하는 개수만큼 제한한 뒤에 결과를 query에 넣는다.
만약 from_self()가 없다면 limit을 이미 걸었으므로 다음과 같은 에러가 난다.

Query.order_by() being called on a Query which already has LIMIT or OFFSET applied. To modify the row-limited results of a  Query, call from_self() first.  Otherwise, call order_by() before limit() or offset() are applied.

from_self() : query의 select 문에서 query를 반환한다.

0개의 댓글