Django : 데이터베이스(ORM)

Psj·2020년 10월 31일
0

Python

목록 보기
20/41

ORM

데이터베이스의 사용은 데이터베이스를 다루는 쿼리문(SQL문)으로 작성한다.
이것을 더 쉽게 만들기위해 django는 기존에 존재하는 SQL문의 겉을 한번 맵핑을 했다.
맵핑을 하면 바깥쪽에서 함수나 메소드를 이용해서 SQL문을 실행할수 있는데 이것을 ORM이라고한다.
이렇게 하면 내부적으로 알아서 함수가 SQL문을 실행해서 테이블을 생성한다던가 테이블의 데이터를 삽입, 삭제, 수정이 가능하다.

models.py에 클래스 만들기

새로 생성한 어플리케이션 폴더에 들어가서 models.py를 열고 클래스를 생성한다.
클래스를 생성후 속성을 위 이미지와 같이 정의 해주고 해당 클래스내에
반드시 __str__(slef) 메소드를 만들어 주어야한다.

__str__(slef)를 만들어주면 외부에서 해당 클래스에 접근을 할때 해당 테이블의 이름을 반환을 해줘서 어떤 테이블인지 쉽게 알아볼수 있게 한다.
이후 admin.py에 위 이미지와같이 해당 클래스에 대한 import 내용을 등록해주고

python manage.py makemigrations 로 변경사항을 확인후
python manage.py migrate 로 변경사항을 적용한다.
그러면 실질적으로 데이터베이스에 모든게 반영이 된다.

반영된 데이터베이스에 Create,Read,Update,Delete 하기

반영된 데이터베이스를 변경하기 위해서는
먼저 장고shell 모드가 실행되어야한다.
장고shell모드의 실행 명령어는 파이썬shell 실행명령어와 동일하다

파이썬shell, 장고shell 실행명령어 : python manage.py shell

먼저 프로젝트 파일내에 students 어플리케이션을 생성했다고하고
해당 models.py의 class로 Student를 만들었다고 가정하고 진행을 하겠다.
(위 "modes.py에 클래스 만들기" 단계의 이미지의 class를 생성했다고 가정)

<데이터베이스에 데이터 create(생성)하기>

1. 장고shell을 실행하고
from students.models import Student 입력한다.
2. qs = Student(s_name='honggildong', s_maojor='computer', s_age=21, s_grade=2, s_gender='M')
-> qs는 query string이라는 뜻이고 위에서 만든 데이터베이스인 Student클래스의 속성에 honggildong, computer, 21, 2, M 를 대입한다는 뜻이다.
3. 위와같이 원하는 내용을 다 대입을 했으면
qs=save() 로 저장을하면 끝난다.

<데이터베이스에 데이터 read(검색)하기>

장고shell열고
Student클래스의 모든 데이터 가져오기: Student.objects.all()
만약 Student클래스에
qs = Student(s_name='honggildong')
qs = Student(s_name='honggilsoon')
qs = Student(s_name='honggilja') 를 적용했다면

qs[1] 을 입력하면
<Student: honggilsoon>
qs[0] 를 입력하면
<Student: honggildong> 의 결과가 나온다.

밸류값만 가져오고싶다면
qs[0].s_name 을 입력하면
'honggildong' 의 결과만 나온다.

특정값만 변수에 넣어 가져오고싶다면
qs = Student.objects.get(s_name='honggildong') 입력
qs 입력
<Student: honggildong> 결과

이어서
qs.s_major 를 입력
'computer' 결과
(hoggildong이 속해있는 s_major 속성의 값을 가져온다.)

데이터 필터


데이터 정렬

<데이터베이스에 데이터 update(업데이트)하기>

<데이터베이스에 데이터 delete(삭제)하기>

profile
Software Developer

0개의 댓글