[Django] Django의 DB에 INSERT, SELECT, UPDATE, DELETE하기: QuerySet

2022. 9. 2. 15:15Back-end/Django

반응형

QuerySet

MySQL 등으로 DB를 관리할 때 INSERT, SELECT, UPDATE, DELETE를 SQL문으로 실행하게 됩니다. 이와 유사하게 Django에서도 Python 코드로 모델을 생성하고, 이 모델로 생성된 DB에 INSERT, SELECT, UPDATE, DELETE 등의 CRUD 작업을 할 수 있습니다. QuerySet으로 DB의 객체를 전달받아서 이 객체의 메소드를 사용하면 됩니다.


QuerySet 사용하기

 

모델 클래스이름.objects로 객체를 불러올 수 있습니다. 아래에서는 편의상 ModelClass.objects로 객체를 불러오겠습니다.

 

1. SELECT

Dictionary형으로 객체를 가져옵니다. Key, value로 객체의 값에 접근할 수 있습니다.

  • ModelClass.objects.all()
    DB의 데이터를 전부 가져옵니다.
  • ModelClass.objects.filter(age=10)
    조건에 해당하는 객체만 가져옵니다. age가 10인 Row들을 객체로 가져옵니다.
  • ModelClass.objects.exclude(age=10)
    조건에 해당하는 객체만 제외하고 나머지를 모두 가져옵니다. age가 10인 Row들을 제외하고 나머지를 객체로 가져옵니다.
  • ModelClass.objects.count()
    Row의 개수를 세서 int형으로 반환합니다.
  • ModelClass.objects.distinct(age=10)
    조건에 해당하는 객체는 중복을 제외하고 1개만 가져옵니다.

2. UPDATE

새로 업데이트 할 객체를 가져온 뒤 객체를 수정합니다.

  • people = ModelClass.objects.filter(age=10)
    for person in people:
        people.name = 'Kim'
        people.save()
    객체를 직접 접근하여 수정한 뒤 저장합니다. age가 10인 Row들에 대해, 이름을 Kim으로 변경한 후 저장합니다.
  • people = ModelClass.objects.filter(age=10)
    people.update(name='Kim')
    조건에 해당하는 column을 한번에 수정합니다. age가 10인 Row들에 대해, 이름을 Kim으로 한번에 변경한 후 저장합니다.

3. DELETE

삭제할 객체를 가져온 뒤 객체를 삭제합니다.

  • people = ModelClass.objects.filter(age=10)
    people.delete()

4. INSERT

삽입의 대상이 될 객체를 가져온 뒤 삽입합니다.

  • people.objects.create(name='Park', age=20)

 

 

 

반응형