DB, ORM, migration, model field, admin CRUD

justyoon·2023년 4월 13일
0

AI5 Python/Django

목록 보기
30/31
post-thumbnail

목차

Model Intro

  • 모델이 필요한 이유
  • 클래스와 인스턴스를 이용한 정보 저장
  • DB의 필요성

DB

  • 간단한 sql문 예시
  • different db, different sql

ORM

  • OOP to SQL
  • PyMongo와 MongoDB의 경우

Migrations

  • 생성되는 sql문
  • erdcloud의 sql문

Admin
CRUD

Model Intro

DB

참고: SQLite3로 가볍게 배우는 데이터베이스: SQL 기초 실습

용어

  • 스키마 (ID, Name, Birthday, PRIMARY KEY의 내용)
  • 필드 (구조상의 구분 명칭)
  • 레코드 (새로 등록하는 데이터 값들)

ORM

특징

  • SQL을 잘 몰라도 DB연동이 가능합니다.
  • 모델과 DB를 연결해줍니다.
  • 장고는 자체적으로 ORM이 탑제되어 있습니다.
  • DB마다 다른 SQL구문을 설정한 데이터 모델에 따라 맞춰주는 강력한 편의성을 제공합니다.
  • ex: foregin key, primary key가 뭔지 정의 해줘야 장고 ORM이 SQL구문을 맞춰줍니다

정리

  • OOP=객체지향프로그램=클래스와 인스턴스를 사용하는 프로그램에서 DB를 편리하게 관리하기 위해 ORM 프레임워크를 사용합니다.

migration

makemigrations

python manage.py makemigrations

  • makimigrations는 models에 적용한 변경 내용을 감지 및 기록하고 그내용을 담은 migrations 파일을 생성합니다.

showmigrations

python manage.py showmigrations

  • project의 migrations list와 상태를 보여줍니다.

sqlmigrate

python manage.py sqlmigrate articles

  • migration을 위한 SQL 상태를 보여줍니다.
contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
employee
 [X] 0001_initial
notice
 [X] 0001_initial
project
 [X] 0001_initial
schedule
 [X] 0001_initial
sessions
 [X] 0001_initial

migrate

python manage.py migrate

  • migrations를 적용 및 적용 해제합니다.
  • migrate는 그렇게 기록된 파일들과 설정값들을 읽어들여 해당 변경사항을 db에 실제로 저장하는 역할을 합니다.

💡migration tip

  1. 개발 단계에서는 migrations폴더를 .gitignore에 추가해 repository에 업로드 되지 않도록 합니다
  2. model schema에 큰 변화가 없는 배포 버전에서는 .gitignore에 추가 할 필요 없이 makemigrations 하지 않고 업로드합니다.
  • makemigrations 이후에는 migration 폴더를 확인하는 습관을 갖는게 좋다.
    DB는 중요하기 때문에 무엇이 수정되었는지 다시 한번 확인!

  • makemigrations [app-name]
    예상치 못한 migration을 방지하기 위해 앱 이름을 특정하는 것이 좋다.

  • showmigrations를 통해서 적용 상태를 조회할 수 있다.
    [ ] : 적용 전
    [x] : 적용 후

  • 실제 DB에는 sql 쿼리로 명령이 전달이 된다.

  • migration 파일은 쿼리는 아니다.
    따라서 sqlmigrate 명령을 통해 sql로도 확인하는 습관이 필요하다.

  • 이미 적용한 migration 파일은 지우지않고 이름을 변경해 둡니다.

  • 프로젝트/앱 생성 후 처음 migrate 할 때는 app 이름을 명시하지 않는다.
    이는 장고 기본 앱에, 여러 앱에 걸쳐서 적용할 migrate가 있기 때문이다.

  • no such table, column 등의 오류는 migration 관련 문제이다.

model field

Django model docs

  • char field 써서 db용량 아끼기?

admin CRUD

장고가 제공하는 admin을 이용해서 CRUD 연습해보기
SQL Tutorial

Create(생성)
Read(읽기)
Update(갱신)
Delete(삭제)

admin 만들기

python manage.py createsuperuser

관리자 계정 만들기

아이디와 비밀번호를 입력하고 관리자 페이지로 들어가면
장고가 지원하는 모듈로 만들어진 관리자용 게시판을 사용할 수 있습니다.
디버깅이나 테스트에 유용하게 사용할 수 있습니다.

profile
with gratitude, optimism is sustainable

0개의 댓글