장고 쉘을 통한 쿼리셋 실습 내용정리
먼저 커맨드 창에서 파이선 쉘을 실행 시켜 진행을 합니다.
python manage.py shell
from dogs.models import Owner,Dog
- MySQL을 다른창에서 실행시킨 후 즉각적으로 확인하면서 실습을 진행했습니다.
- 쿼리셋의 경우 중요한 내용이며, 지속적인 연습이 중요합니다.
- 실습모델에서 진행한 클래스를 기준으로 진행
>>>Owner.objects.create(name="홍길동",age=20,eamil="aaaa@aaaa.com",address="서울"phone_number="010-1234-1234")
>>> <Owner :홍길동>
>>> MySQL창에서 SELECT * FROM 테이블명
>>> 생성된 테이블에 홍길동 데이터가 들어간 것을 확인할 수 있습니다.
>>>다른 방법은 변수에 정보를 저장해서 데이터를 생성할수 있다
>>>sam =Owner(name="춘향이",age=18,email="bbbb@bbbb.com",address="광양",phone_number="010-2222-2323")
>>> sam
>>> <Owner :춘향이>
>>> MySQL의 테이블을 확인해보면 데이터가 조회가 되지 않는다. 변수에 데이터를 넣어 생성하는 경우에는 변수.save()를 추가적으로 진행해 주어야 데이터가 조회가 된다.
>>> sam.save()
이제 데이터를 생성하는 CREATE단계를 진행하였으니, READ 단계를 진행 해보겠습니다.
>>>Owner.objects.all() #모든 오너의 정보를 읽어드림
>>><QuerySet [<Owner: 홍길동>, <Owner: 춘향이>]
>>>Owner.object.values() #오너의 속성값을 모두 조회
>>> <QuerySet [{'id': 1, 'name': '홍길동', 'age': 20, 'email': 'aaaa@aaaa.com', 'address': '서울 ', 'phone_number': '010-1234-1234'}, {'id': 2, 'name': '춘향이', 'age': 18, 'email': 'bbbb@bbbb.com', 'address': '광양', 'phone_number': '010-2222-2323'}]
특정데이터만 가지고 오고싶을때(1가지)
>>>Owner.objects.get(name="홍길동")
>>><Owner=홍길동>
>>>Owner.object.get(age=20)
>>><Owner:춘향이>
변수에 넣어서 조회 하기
>>>info = Owner.objects.get(name="홍길동")
>>>info
>>><Owner:홍길동>
>>>info.email
>>>'aaaa@aaaa.com'
>>>info.age
>>>20
쿼리셋을 통한 조회
filter(filter는 get과 달리 여러데이터를 동시 조회 가능)
>>>Owner.objects.filter(age=31)
>>>b =Owner.object.filter(age=31)
>>>b =<QuerySet [<Owner: 구동현>, <Owner: 최상근>, <Owner: 최종우>, <Owner: 임지산>]>
>>> b.name
>>>에러 발생(get과는 달리 filter는 이런식으로 사용불가)
>>> c =Owner.objects.all()
<QuerySet [<Owner: 구동현>, <Owner: 최상근>, <Owner: 최종우>, <Owner: 임지산>]>
>>> for owner in c:
... print(owner.name)
구동현
최상근
최종우
임지산
>>> Dog.objects.create(name="웅이",breed="푸들",age=5, color="갈색",owner=Owner.objects.get(name="구동현")
>>> hello = Owner.objects.get(name="구동현")
>>> hello
<Owner:구동현>
>>>Dog.objects.create(name="웅이",breed="푸들",age=5, color="갈색" owner= hello>
<dog:웅이>