프로젝트 마지막 전날!!
드디어 하루 남았는데.. 너무 아쉽다.. 난 내가 할일을 하자
백오피스에서 회원 목록 불러오는걸 하자
main.py
# 상단에 get_all_user_info 추가
from BE.crud import create_user, get_user, verify_password, get_user_info, update_user_info, get_models, get_my_models, create_model, get_model, user_image, email_code, check_email_code, user_image, user_model, model_ipynb, model_img, get_result_img, get_all_user_info
@app.get("/admin/users")
def all_user_info(db: Session = Depends(get_db)):
users_info_db = get_all_user_info(db)
return users_info_db
crud.py
def get_all_user_info(db: Session):
return db.query(User).all()
이렇게 테스트를 해보면
비밀번호 컬럼도 불러와서 필요한 컬럼만 불러오게 해보자
이전에 사용했던 with_entities() 을 사용 해봤다.
crud.py 를 수정하고
def get_all_user_info(db: Session):
return db.query(User).with_entities(User.email, User.nickname, User.role, User.login_method, User.image, User.created_at).all()
테스트를 해봤다
에러가 나오는데
딕셔너리 업데이트에 시퀀스의 길이가 잘못되었다는 에러를 볼수있고
vars() 함수의 인자로 dict 속성이 있는 객체를 전달해야한다고 나와있다..
음 그래서 with_entities() 메서드에 대해서 알아보았다.
with_entities() 메서드는 쿼리 객체에서 반환할 컬럼을 지정하는데 사용된다
고로 쿼리 결과에서 특정 컬럼을 선택적으로 가져올때 사용? 된다.
그래서 다른걸 찾아봤다
options() 메서드에 load_only() 라는 함수가 있다
참고한 문서를 보면
https://docs-sqlalchemy.readthedocs.io/ko/latest/orm/loading_columns.html#sqlalchemy.orm.load_only
load_only 함수는 options 메서드와 함께 사용하고 특정 컬럼만 지정해서 가져올 수 있다라고 나와있다.
다음과 같이 코드를 수정하고
# 상단에 load_only 추가
from sqlalchemy.orm import Session, load_only
def get_all_user_info(db: Session):
return db.query(User).options(load_only(User.email, User.nickname, User.role, User.login_method, User.image, User.created_at)).all()
테스트를 해보면
보는것 처럼 특정 컬럼만 가져와진다.
본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 <AI 서비스완성! AI+웹개발 취업캠프 - 프론트엔드&백엔드> 과정 학습/프로젝트/과제 기록으로 작성되었습니다.
'코딩캠프 > AI 웹개발 취업캠프' 카테고리의 다른 글
[AI 웹개발 취업캠프] 79Day - 마지막날 및 성과공유회(프로젝트 30일차) (0) | 2023.11.10 |
---|---|
[AI 웹개발 취업캠프] 77Day - 프로젝트 28일차 (0) | 2023.11.08 |
[AI 웹개발 취업캠프] 76Day - 프로젝트 27일차 (0) | 2023.11.07 |
[AI 웹개발 취업캠프] 75Day - 프로젝트 26일차 (2) | 2023.11.06 |
[AI 웹개발 취업캠프] 74Day - 프로젝트 25일차 (0) | 2023.11.04 |