조인할 데이터가 없어도 불러오는 쿼리

2024년 12월 5일 목요일

Today I Learned

날짜

2024년 12월 5일 목요일

내용

버그 대폭발

아임리포트의 버그가 대폭발했다. 데이터 업데이트가 미친듯이 오래걸리기 시작해서, 제한시간인 6시간이 넘어가며 실패처리 되는 걸로 파악했다. 네이버에서 안준다고 못박아버리는 바람에, 우선은 “-”로 저장하도록 로직을 바꿔줬다. 이제 삭제된 키워드가 많더라도 하루만 고생하면 그 이후에는 요청이 오래 걸릴 일이 없다.

슈퍼어드민에서 유저를 불러올 때 일부 데이터가 안불러와진다.. 아마 온갖 데이터를 다 조인하는 과정에서 연관데이터가 없는 경우 누락된 듯하다. 쿼리를 수정해줬다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 기존 쿼리
stmt = (
    select(models.User)
    .outerjoin(models.User.company)
    .options(joinedload(models.User.billing_plan))
    .options(joinedload(models.User.google_login_account))
    .options(joinedload(models.User.super_admin_memo))
)
db.execute(stmt).scalars().all()

# 수정 쿼리
stmt = (
    select(models.User)
    .outerjoin(models.User.company)
    .options(contains_eager(models.User.company))
    .options(joinedload(models.User.billing_plan))
    .options(joinedload(models.User.google_login_account))
    .options(joinedload(models.User.super_admin_memo))
)

db.execute(stmt).unique().scalars().all()

회고

버그야 제발