간단하게 이해하면, 웹 사이트에 필요한 기능별로 모듈화된 단위 프로그램이 실행되며 사용자가 요청한 정보를 데이터베이스에서 꺼내 사용자에게 전달하는 Web Framework
또한 data를 생성, 조회, 수정, 삭제할 수 있고 이를 가르켜 CRUD
라고 부름
Django - ORM -> 객체와 관계형 데이터베이스를 연결하는 기능
서로 다른 언어로 구성되어 있는 데이터베이스를 연결시켜 주는 것
관계형데이터베이스 형태로 저장, 객체 형태로 사용하 수 있도록 한다
데이터 베이스 실습하면서 사진 찍어서 설명!
일반적으로 자주 사용되는 model method
를 통해 데이터베이스를 관리할 수 있음
QuerySet으로 반환되는 경우와 그렇지 않은 경우
사용할 수 있는 명령어가 달라지기 때문에 어떤 자료형으로 반환이 되는지 잘 알아봐야함
>>> User.objects.get(name='정준하')
<User: User object (39)>
get
명령어를 사용하면 object
로 변환
>>> User.objects.filter(name='정준하')
<QuerySet [<User: User object (39)>]>
filter
명령어를 사용하면 QuerySe
t으로 변환, QuerySet
= 리스트
QuerySet으로 반환되지 않는 경우
create
테이블에 데이터를 추가해주는 method / 생성된 인스턴스를 반환
>>> create1 = User.objects.create(name='엄태구')
>>> create1
<User: User object (43)>
get
지정된 조회 매개 변수와 일치하는 인스턴스를 반환합니다.이 매개 변수는 필드 조회에 설명 된 형식이어야 함
update
지정된 필드에 대해 업데이트를 수행하고, 수행된 행 수를 반환. delete
메서도도 사용법은 비슷
>>> User.objects.filter(name='엄태구').update(name='원진아')
1
>>> updata1 = User.objects.get(name='원진아')
>>> updata1
<User: User object (43)>
save
save의 사용법. 데이터베이스에도 적용.
>>> user = User.objects.get(id=43)
>>> user.name
'원진아'
>>> user.name = '한효주'
>>> user.name
'한효주'
>>> user.save()
>>> user.name
'한효주'
exists
그 값이 있는지 없는지, True or False로 반환
>>> User.objects.filter(name='한효주').exists()
True
first
QuerySet 결과 중 가장 첫 번째 결과 값을 반환
행과 열에 대한 이해가... 더 있어야 할 거 같음
>>> User.objects.first()
<User: User object (4)>
>>> User.objects.first().name
'동헌'
QuerySet으로 반환되는 경우
values
, values_list
QuerySet 전체를 딕셔너리 형태로 반환 / values_list
는 value만 반환!
>>> User.objects.values()
<QuerySet [{'id': 4, 'email': 'asdasd@gmail.com', 'name': '동헌', 'phoneNumber': '01033333010', 'password': '12341234'}, {'id': 5, 'email': 'vvddqq@gmail.com', 'name': '준호', 'phoneNumber': '01039302934', 'password': '123456'}, {'id': 6, 'email': 'vvddq@gmail.com', 'name': '지운', 'phoneNumber': '01148480404', 'password': '909090'}, {'id': 7, 'email': 'vndjve@yahoo.com', 'name': '미카엘', 'phoneNumber': '01049494939', 'password': '05050505'}, {'id': 8, 'email': 'darknight@yahoo.com', 'name': '베일', 'phoneNumber': '01093938484', 'password': '0401201'}, {'id': 9, 'email': 'worf@yahoo.com', 'name': '매튜', 'phoneNumber': '01093938484', 'password': '0401040'}, {'id': 10, 'email': 'worf@wecode.com', 'name': '크리스', 'phoneNumber': '01094940192', 'password': '00000000'}, {'id': 11, 'email': '123890@vrnv.com', 'name': '샘', 'phoneNumber': '01748494049', 'password': '0909098'}
참고사이트
https://velog.io/@inyong_pang/Django-ORMObject-Relationship-Mapping