본 포스트에서는 Django에서의 QuerySet API에 대해 이야기해볼 것입니다.
먼저 QuerySet API가 뭔지부터 알아야겠죠?
QuerySet API : python의 모델 클래스와 인스턴스를 활용해 DB에 데이터를 저장, 조회, 수정, 삭제하는 것
그럼 이제 사전 준비 사항과, CRUD(Create, Read, Update, Delete) 방법에 대해 자세히 알아봅시다!
QuerySet API 사전 준비
먼저 필요한 외부 라이브러리를 설치해줍시다.
다음으로 설치한 django_extensions를 settings에 등록해줍니다.
이제 모든 준비가 완료되었으니, Django shell을 실행하면 됩니다!
Django shell이란 Django 환경 안에서 실행되는 python shell 입니다.
(여기서 입력하는 QuerySet API 구문이 Django 프로젝트에 영향을 미치게 됩니다.)
CRUD (Create, Read, Update, Delete)
Create
# 방법1: 객체를 만들어서 "한번에" 데이터를 집어 넣고 DB에 저장
>>> article = Article(title='first', content='django~')
>>> article.save()
=> 이 경우, 반드시 save를 해줘야 함
# 방법2: create()를 활용해 "객체를 거치지 않고" 한번에 DB에 저장
>>> Article.objects.create(title='second', content='django@')
=> 이 경우, save가 필요 없음
Read
1. all() : 전체 데이터 조회 (쿼리셋 반환)
>>> Article.objects.all()
<QuerySet [<Article: Article object (1)>, <Article: Article object (2)>]>
2. filter() : 주어진 매개변수와 일치하는 객체를 포함하는 QuerySet 반환 (쿼리셋 반환)
>>> Article.objects.filter(content='django@')
<Article: Article object (2)>
3. get() : 주어진 매개변수와 일치하는 객체를 반환 (쿼리셋 반환하지 않음)
>>> Article.objects.get(content='django@')
<Article: Article object (1)>
<get 특징>
- 객체를 찾을 수 없으면 DoesNotExist 예외를 발생시키고, 둘 이상의 객체를 찾으면 MultipleObjectsReturned 예외를 발생시킴
- 위와 같은 특징을 갖고 있기 때문에 primary key와 같이 고유성(uniqueness)을 보장하는 조회에서 사용해야 함
Update
인스턴스 변수에 변경하고자 하는 레코드를 담고, 인스턴스 변수를 변경한 뒤, save하면 됩니다.
>>> article = Article.objects.get(pk=1) # 수정할 인스턴스 조회
>>> article.title = 'byebye' # 인스턴스 변수 변경
>>> article.save() # DB에 반영
Delete
인스턴스 변수에 삭제하고자 하는 레코드를 담고, 인스턴수 변수를 delete하면 됩니다.
>>> article = Article.objects.get(pk=1) # 삭제할 인스턴스 조회
>>> article.delete() # delete 메서드 호출
(1, { 'articles.Article' : 1}) # 삭제된 객체가 반환
'Study > Django' 카테고리의 다른 글
[Django] Django에서 만난 에러 모음 (0) | 2024.09.27 |
---|---|
[Django] django-html에서 자동 완성이 안될 때 해결법 (0) | 2024.09.24 |
[Django] 알라딘 API로 수집한 데이터를 프로젝트에 저장하기 (0) | 2024.09.23 |
[Django] include를 이용한 URL 매핑 (1) | 2024.09.23 |