ORM && SQL

백승찬·2021년 1월 3일
0

django

목록 보기
10/11

SELECT

GET

단일 행 결과를 반환, Query Set이 아닌 다일행 (모델타입)으로 나옴

ALL

전체 자료를 불러옴, Query Set 타입으로 반환

Filter

조건에 맞는 여러 행을 출력 타입은 Query Set으로 반환

장고 ORM (SQL 질의문)

OR 연산, AND 연산

ex 1) OR

queryset = User.objects.filter(
        first_name__startswith='R'
    ) | User.objects.filter(
    last_name__startswith='D'
)
queryset
<QuerySet [<User: Ricky>, <User: Ritesh>, <User: Radha>, <User: Raghu>, <User: rishab>]>

ex 2) OR (Q 객체 활용)

from django.db.models import Q
qs = User.objects.filter(Q(first_name__startswith='R')|Q(last_name__startswith='D'))

ex 1) AND (Q 객체 활용)

queryset_3 = User.objects.filter(
    Q(first_name__startswith='R') &
    Q(last_name__startswith='D')
)


queryset_1
<QuerySet [<User: Ricky>, <User: Ritesh>, <User: rishab>]>

NOT 연산

ex 1)

>>> queryset = User.objects.exclude(id__lt=5)
>>> queryset
<QuerySet [<User: Ritesh>, <User: Billy>, <User: Radha>, <User: sohan>, <User: Raghu>, <User: rishab>]>

ex 2) Q 객체 활용

>>> from django.db.models import Q
>>> queryset = User.objects.filter(~Q(id__lt=5))
>>> queryst
<QuerySet [<User: Ritesh>, <User: Billy>, <User: Radha>, <User: sohan>, <User: Raghu>, <User: rishab>]>

필드 값을 비교하여 항목 선택

In [27]: User.objects.create_user(email="shabda@example.com", username="shabda", first_name="Shabda", last_name="Raaj")
Out[27]: <User: shabda>

In [28]: User.objects.create_user(email="guido@example.com", username="Guido", first_name="Guido", last_name="Guido")
Out[28]: <User: Guido>

2개의 레코드 생성

  • F 객체 활용
In [29]: User.objects.filter(last_name=F("first_name"))
Out[29]: <QuerySet [<User: Guido>]>

0개의 댓글