[Django] Django의 DB에 INSERT, SELECT, UPDATE, DELETE하기: QuerySet
2022. 9. 2. 15:15ㆍBack-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)
반응형
'Back-end > Django' 카테고리의 다른 글
[Django] Django로 만든 앱을 배포하기: Pythonanywhere (0) | 2023.01.31 |
---|---|
[Django] Django-rest-framework로 GET, POST, PUT, DELETE 구현하기: APIView (0) | 2022.09.14 |
[Django] 서버의 DB를 RESTful API로 접근하기: Django-rest-framework (0) | 2022.08.25 |
[Django] CORS 해결하기: django-cors-headers (0) | 2022.08.21 |
[Django] Mac의 Safari에서 CORS 해결하기 (0) | 2022.08.21 |