1.Models로 DB연결하기
1). Models.py로 DB 데이터 만들기
Django 은 저번에도 말했듯이 Models.py로 DB 테이블을 생성할수 있다. Django에서는 DB 데이터를 불러오거나 생성하는 것을 ORM이라고 한다. 다른 프레임워크틑 일반적으로 DB 쿼리를 사용하여 DB와 소통하거나 JDBC 드라이버를 이용하여 쿼리를 보내는 개념이였다면 해당 Django는 이 쿼리를 객체화하여 DB와 소통하는 방식이다. 이를 ORM이라고 한다.
먼저 app폴더에 models.py에 다음과 같이 blogm class을 만듬.
여기에서보면은 models.charfield 및 models.IntegerField models.DateTimeField부분이 보인다. 이것은 blogm의 데이터를 선언하는데 charfield(스트링형) IntegerField(정수형) DateTimeField(날짜형)으로 선언하는 것을 말한다.
즉 DB 쿼리에서는 다음과 같다고 할수 있다.
create table blogm(
name varchar(200),
test int(10) default '0' not null,
DateCreated DATETIME DEFAULT CURRENT_TIMESTAMP
)
mysql 부분에서 varchar부분이 Django에서는 charfield, int는(IntegerField), DateTimeField는(CURRENT_TIMESTAMP) 이다.
더 자세한 필드는 아래 DjangoProject에서 확인할수 있다.
https://docs.djangoproject.com/en/3.0/ref/models/fields/
models.py를 다 설정하면 해당 migration을 Django에서 해야 된다. 저번에도 admin페이지 만들때 migrate를 했었는데 이번에는 한가지 명령어가 추가가 된다.
makemigrations라는 명령어이다. 이 명령어는 app에서 models.py를 선언할때 해당 models의 변경사항을 Django에게 알려주기 위해서 사용되어 진다. 해당 makemigrations를 시키면 아래 그림처럼 0001_initial.py라는 파일이 생성되는 것을 확인할수 있다. 해당 부분이 models의 변경사항을 migrate해주기 위해 쓰여준다.
[명령어]
sudo python3 manage.py makemigrations [app이름]
이 makemigrations한후 DB 테이블에 저장하기 위해 migrate 명령어를 입력한다.
[명령어]
sudo python3 manage.py migrate
해당 DB가 잘들어갔는지 확인하기 위해서는 manage.py에서 dbshell을 통하여 확인할수 있다.
[명령어]
sudo python3 manage.py dbshell
.tables(dbshell정상 쉘이 확인된후 친 명령어_sqlite3 테이블 확인 명령어)
위와 같이 테이블이 만들어졌으면 해당 DB에 CRUD(Create/Read/Update/Delete)을 할수가 있다.
Django는 DB쿼리문을 이용하는 것이 아니라 ORM을 통하여 DB데이터를 입력하기 때문에 기존 쿼리와 다르다.
다음 그림처럼 manage.py의 shell에 접근한다.
접근후 아래 명령어을 입력한다.
[입력명령어]
from blog.models import blogm
blogm.objects.create(title="test")
여기에서 보면은 from blog.models import blogm 이 있다. 이것은 blog app의 models.py에서 blogm 데이터를 받아온다. 그리고 blogm.objects.create라는 명령어는 CRUD에서 Create부분인데 일종의 데이터를 입력시키는 명령어이다.
다시 DB쉘로 접근하여 DB 쿼리문을 쳐보면은 위의 create 하여 title부분의 입력값이 생성된 것을 확인할수 있다 근데 여기서 뒤의 날짜가 나오는데 이것은 위의 models.py의 created_at 및 modified_at 자동 생성으로 된 값이다. 그리고 Django는 맨처음 id가 자동으로 넣어주기 때문에 맨 처음 1이 생성이 된다.
DB가 아닌 Shell에서 확인할려고 하면 get명령어로 확인할수 있다.
get으로 test 라는 변수에 저장한다. 그리고 해당 test변수는 DB의 id1번의 값을 가져오는데 이중 title의 값을 불러온다.
Create는 create 또는 save를 쓰며 get으로 데이터를 불러올수 있다.
위와 같이 Django에서의 DB는 기존 쿼리셋이 아닌 ORM을 이용한 명령 모델구조로 되어 있어서 기본적인 CRUD는 정말 쉽게 되어 있다 다만 정교한 DB쿼리문일때에는 Filter 명령어를 붙이고 해야 하는데 일반적인 제약이 따르게 되는 아쉬움이 있다.
해당 ORM을 더 찾아볼려면 아래 Django페이지에서 확인하면 좋다.
https://docs.djangoproject.com/ko/3.0/intro/tutorial02/
'프로그래밍 > django' 카테고리의 다른 글
Django 와 SB Admin을 이용한 Yara GUI Interface 만들기(6) (0) | 2020.03.14 |
---|---|
Django 와 SB Admin을 이용한 Yara GUI Interface 만들기(5) (0) | 2020.03.14 |
Django 와 SB Admin을 이용한 Yara GUI Interface 만들기(3) (1) | 2020.03.11 |
Django 와 SB Admin을 이용한 Yara GUI Interface 만들기(2) (0) | 2020.03.10 |
Django 와 SB Admin을 이용한 Yara GUI Interface 만들기(1) (0) | 2020.03.09 |
댓글