ORM - python

심준보·2023년 12월 19일
post-thumbnail

django를 사용하여 백엔드 개발을 진행하다보면, orm의 중요성을 깨닫게 된다.

💡 values() , values_list( , flat = True)
  • values_list(,flat=True)
    • orm을 통해 추출한 데이터 값이 , Queryset 형태가 아닌, list형태로 추출하고 싶을때 사용하면 된다
💡 distinct()
  • 이는 중복제거로, 똑같은 값이 중복되지 않고 추출되도록 할 수 있다.
    • shop.objects().filter().distinct().values_list(”name”) → name필드에 중복된 값이 있다고 하더라도 한번만 추출되게 된다.
    • 즉, values()안에 있는 필드의 값이 중복 제거 되어 나온다. → 필드 중복제거
  • 필드 여러개 버전
    review_user = review_list.filter(user_id = i).distinct().values_list('product_id','content' ,'product_option')
    • 위와 같이 여러개 필드에 대해서 distinct를 걸었을때
    • 저거 세개에 대해서 다 똑같아야만 그때 중복처리를 해준다.
    • 즉, 정말 다 똑같아서 필요없는 것만 없애고 추출한다는 뜻이다.
💡 .get()
  • get()을 사용할 경우 하나의 값만 가져올수 있다.
  • 그렇기에 , db에서 get()안에 들어가는 조건과 매칭되는것이 2개 이상일 경우에는, filter()를 사용하여 추출해주는 것이 좋ㄷ.
  • filter()를 통해 여러개를 추출한 후 for문으로 접근하는 방식으로.
💡 왠만하면 .filter()를 사용하자
  • get() 은 조건에 안맞으면 오류가 날수 있다.

    • 그럼 filter()는 오류가 나지 않는가?
  • filter() 는 쿼리셋 형식으로 받아지기 때문에,

    first()를 사용하여, object형식으로 변환해서 사용하자.

profile
밑거름이라고생각합니다

0개의 댓글