연습 - 데이터 작업
모델을 만들어 데이터베이스의 데이터에 액세스하는 데 사용할 수 있는 API를 만들었습니다. 이 API를 사용하여 데이터베이스에서 개체를 만들고, 검색하고, 업데이트하고, 삭제할 수 있습니다.
만든 모델을 사용하여 API를 살펴보겠습니다.
대화형 셸 구성
Django에는 Django 환경에서 Python 코드를 실행할 수 있는 대화형 셸이 포함되어 있습니다.
보기>터미널을 선택하여 Visual Studio Code의 터미널로 돌아갑니다.
다음 명령을 입력하여 셸을 시작합니다.
python manage.py shell
dog_shelters
내부의models
에서 모델을 가져옵니다.from dog_shelters.models import Shelter, Dog
개체 만들기 및 수정
모델은 Python 클래스이므로 개체를 만드는 데 사용하는 것과 동일한 구문을 사용하여 새 인스턴스를 만듭니다. Django.models.Model
에서 상속되기 때문에 Django ORM의 기능을 상속합니다. 이 기능에는 개체를 데이터베이스에 저장하는 데 사용하는 save
이 포함됩니다.
셸에서 다음 Python 명령을 실행하여 새 보호소를 만듭니다.
shelter = Shelter(name="Demo shelter", location="Seattle, WA") shelter.save()
save
파트는 개체를 데이터베이스에 씁니다. 이를 처음부터 만들었으므로 데이터베이스에서INSERT
문을 실행합니다.location
필드를 설정하고save
를 호출하여 보호소 위치를 워싱턴주 레드몬드로 업데이트합니다.shelter.location = "Redmond, WA" shelter.save()
이 명령은
UPDATE
문을 실행하여 데이터베이스의 값을 업데이트합니다.셸에서 다음 Python 명령을 실행하여 보호소에 보낼 유기견 두 마리를 새로 만듭니다.
Dog(name="Sammy", description="Cute black and white dog", shelter=shelter).save() Dog(name="Roscoe", description="Lab mix", shelter=shelter).save()
이전과 마찬가지로,
save
는 유기견을 삽입합니다.shelter
매개 변수를 이전에 만든shelter
객체로 설정하는 방법에 주목하세요. Django는 데이터베이스에서 관계를 자동으로 설정합니다.또한 각
Dog
인스턴스에 대해 지역 변수를 설정하지 않았습니다. 개체를 다시 사용하지 않으므로 변수로 설정할 필요가 없습니다.
개체 검색
데이터베이스에서 개체를 검색하기 위해 Django는 모든 Model
클래스에 objects
속성을 제공합니다. objects
속성은 all
, filter
및 get
를 포함한 여러 함수를 제공합니다.
다음 명령을 실행하여 데모 보호소에 있는 모든 유기견을 검색합니다.
shelter.dog_set.all()
dog_set
파트는 특정 보호소에 관한 모든 유기견 목록을 저장합니다. Django는 우리가 만든 두 유기견과 함께QuerySet
객체를 반환합니다.<QuerySet [<Dog: Sammy>, <Dog: Roscoe>]>
다음 명령에 표시된 대로
get
을 사용하여 두 번째 유기견을 검색하세요.Dog.objects.get(pk=1)
get
함수는 개체를 하나만 반환합니다. 매개 변수를get
에 전달하여 쿼리 문자열을 제공할 수 있습니다. 여기서는 기본 키를 나타내는 특별한 키워드인pk
를 사용합니다. 반환된 결과는 Sammy입니다.<Dog: Sammy>
다음 명령에 표시된것처럼
filter
를 사용하여 데모 보호소에 있는 모든 유기견을 검색합니다.Dog.objects.filter(shelter__name='Demo shelter')
get
과 마찬가지로filter
를 사용하면 매개 변수에 쿼리를 전달할 수 있습니다. 두 개의 밑줄(__
)을 사용하여 속성에서 속성으로 이동할 수 있습니다. 데모 보호소라는 이름의 보호소에서 모든 유기견을 찾으려고 하므로shelter__name
을 사용하여shelter
의name
속성에 액세스합니다. 하나의 보호소만 있기 때문에 반환되는 결과는 모든 유기견입니다.<QuerySet [<Dog: Sammy>, <Dog: Roscoe>]>
셸 닫기
개체 사용을 마친 후 exit()
명령을 실행하여 셸을 닫을 수 있습니다.
요약
Django ORM을 통해 Django에서 데이터를 프로그래밍 방식으로 사용할 수 있는 방법을 살펴보았습니다.