장고(Django)- 마이그레이션(Migration),스키마, DB

전시온·2022년 6월 30일
1

Django 공부

목록 보기
2/2
post-thumbnail
  • Django 모델 개요
    -모델은 우리가 만들 웹서비스에서 사용할 정보의 내용, 특성을 정의한 것이다.
    -스키마 개념과 유사
    ex) 게시물, 댓글, User 정보 등이 있다. -> 시스템에서 처리하고 저장하기위해 모델링이라는 과정 필요

    *스키마(Schema)란? : DB 내에서 데이터가 저장되는 구조와 제약 조건을 정의한 것. 장고에서 하나의 어플리케이션의 models.py 파일이라고 할 수 있습니다.

  • DB(데이터 베이스)
    -데이터를 저장, 관리하고 조회하기 위한 시스템을 의미

우리가 웹사이트를 만들때는 DB에 새로운 데이터를 저장하고 저장된 정보들을 표시한다.
장고에서는 정보의 단위, 즉 모델 클래스를 파이썬 클래스로 선언하여 정의한다. 정의한 하나의 클래스는 하나의 테이블로 만들어지고 DB는 여러개의 테이블로 구성된다.

  • 모델 클래스: 어떤 형태의 정보가 다뤄지고 저장될 지를 정의한다. 우리가 만들 장고 웹 앱 내에서 코드로 구현되고 웹앱이 구동되면서 실제 DB와 연된다.

  • DB와 각 테이플 : 실제 정의된 내용이 저장되는 장소. 웹앱과는 독립적인 시스템으로 존재 (파이썬 기반의 장고 웹서버 뿐만 아니라 자바, 노드 서버를 통해서도 각각의 웹 앱 프레임워크가 제공하는 방식으로 모델클래스를 정의한다음 DB 서버에 접속해서 데이터를 처리하는 것이 가능하다.)

Django Migration

  • 마이그레이션(Migration)이란 ?
    :장고 공식문서에서 말하는 마이그레이션은 모델의 변경내역을 DB 스키마에 적용시키는 장고의 방법이라고 설명한다.

    쉽게 이해하기 : 테이블 및 필드의 생성, 삭제, 변경 등과 같이 데이터베이스에 대한 변경사항을 알려주는 것

장고는 ORM을 사용하기 떄문에 models.py와 클래스를 통해 DB 스키마를 생성하고 다루게 되는데, 이 때 DB 스키마를 버전으로 나눠서 관리할 수 있게 해주는 시스템이라고 생각하면 된다. 즉, 하나의 마이그레이션 파일은 해당 마이그레이션이 생성된 시점의 모델의 구조(DB 스키마)를 담고 있다.

ORM이란?
Object Relational Mapping, 객체-관계 매핑

  • 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.
  • 객체 모델과 관계형 모델 간에 불일치가 존재한다.
  • ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.

장고에서는 자동적으로 구현된 모델 클래스를 DB의 실제 테이블로 생성하는 명령어를 제공한다.

1. python manage.py makemigrations

-마이그레이션 파일 생성하기
-models.py 즉 모델링 파일에 있는 우리가 정의한 모델클래스를 DB에 맞는 형태로 코드를 정의해주는 역할

2. python manage.py migrate

-해당 마이그레이션 파일을 DB에 반영하기

profile
Computer Vision, ROS, ROS2, 3D Lidar, IoT, 티스토리로 블로그 이전함

0개의 댓글