본문 바로가기

Tech/REST Framework

2. Django RestFramework - Model 생성 및 Database Sync

Model 생성 및 Database Sync


1. Model을 생성

먼저 생성한 앱이름인 AppName폴더 안에 들어가면 model.py 파일이 기본으로 있다

열어보면 아래와 같이 되어 있다


from django.db import models

# Create your models here.


여기에 모델정보를 작성해야 한다


필자는 공공데이터포탈에서 제공하는 데이터를 저장해놓고 REST로 서비스하고자 하여 아래와 같이 모델을 구현하였다

from django.db import models

# Create your models here.
class ForcastData(models.Model):
timestamp = models.DateTimeField()
POP = models.FloatField()
PTY = models.FloatField()
REH = models.FloatField()
SKY = models.FloatField()
T3H = models.FloatField()
UUU = models.FloatField()
VEC = models.FloatField()
VVV = models.FloatField()
WSD = models.FloatField()

class Meta:
ordering = ('timestamp',)


뭔가 알수 없는 POP 등 단어가 있는데 본인이 지정한 네이밍일 뿐이다. (POP는 강수확률)

대충 봤을 때 첫번째 줄은 timestamp 시간이고 POP 부터 WSD까지의 정보를 Float의 자료형으로 선언한것을 볼수 있다

이렇게 구현한 내용은 데이터베이스에 읽고 쓰는데 기본 정보가 되겠다.


2. Database 싱크(Sync)


python manage.py makemigrations AppName
python manage.py migrate

두가지 명령어를 실행해주자

(django) C:\Users\Administrator\test\ProjectName>python manage.py makemigrations AppName
Migrations for 'AppName':
AppName\migrations\0001_initial.py
- Create model ForcastData


(django) C:\Users\Administrator\test\ProjectName>python manage.py migrate
Operations to perform:
Apply all migrations: AppName, admin, auth, contenttypes, sessions
Running migrations:
Applying AppName.0001_initial... OK
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying sessions.0001_initial... OK


뭔가 이렇게 나오면 내가 만든 Model과 Database가 잘 동기화(Sync)된것이다.


3. 동기화 확인

Model 과 Database를 동기화 한다는 의미를 잘 모르겠다면 여기서 이해해보자

우선 django는 기본적으로 sqlite라는 경량 데이터베이스를 기본으로 사용한다

위에 2번에서 동기화가 잘 되었다면 아래처럼 프로젝트 폴더에 db.sqlite3 라는 파일이 생성된다

이 파일을 열어서 어떻게 동기화가 되었는지 살펴보자


우선 sqlite를 살펴보려면 프로그램을 설치해야 한다


https://sqlitebrowser.org/



위에 사이트에 들어가서 본인 OS에 맞는 버전을 설치한다

프로그램 설치 후 실행을 하면 아래와 같은 창이 뜬다



상단에 open Database를 클릭하여 프로젝트 폴더 안에 있는 db.sqlite3 파일을 찾아 열어주자

아래 처럼 생긴 Table을 열어보면 낮익은 항목들이 보이는가?