Django(장고) 데이터베이스 세팅

장현웅·2023년 9월 3일
0

데이터를 클라이언트 쪽에서 보내는 것을 해봤으니까 이것을 서버에 저장하기 위해서 데이터베이스에 대해 알아보겠다.

데이터베이스 연결하기


데이터베이스 연결은 처음 장고를 실행하는 순간 settings.py에 있는 DATABASES 라는 정보를 가지고 데이터베이스와 자동으로 연동을 한다.

설정이 잘 되어있다면 장고 서버를 실행해보자. 프로젝트 탐색기에 db.sqlite3가 생성되는 것을 볼 수 있다.

이제 데이터베이스 스키마 생성을 위해 마이그레이션을 생성한다.

[터미널]

python manage.py makemigrations

데이터베이스 스키마(Schema)란?

데이터베이스에서 스키마는 데이터의 저장 및 검색을 위한 구조를 정의하고, 데이터베이스가 어떻게 구성되고 어떤 종류의 데이터를 저장하는지를 결정한다.
데이터베이스 관리 시스템(DBMS)이 이 스키마를 기반으로 데이터를 저장하고 관리한다.

  • 데이터베이스 스키마는 다음과 같은 요소들을 포함한다.
    • 테이블(Table)
      데이터를 저장하는 데 사용되며, 각 테이블은 특정 유형의 데이터를 나타낸다. ex) 사용자 정보를 저장하는 "Users" 테이블, 주문 정보를 저장하는 "Orders" 테이블 등
    • 열(Column) 또는 필드(Field)
      각 테이블은 여러 개의 열 또는 필드로 구성되며, 각 열은 해당 테이블에서 저장되는 데이터의 특정 속성을 정의한다. ex) 이름, 이메일, 비밀번호 등
    • 기본 키(Primary Key)
      각 테이블에서 고유한 레코드를 식별하는 데 사용되는 필드이다. 일반적으로 숫자 또는 고유한 값을 가지며, 중복되지 않는다.
    • 외래 키(Foreign Key)
      다른 테이블의 기본 키를 참조하는 필드로, 테이블 간의 관계를 나타낸다. 외래 키를 사용하여 테이블 간에 데이터를 연결하고 관계를 설정할 수 있다.
    • 제약 조건(Constraints)
      데이터의 무결성을 보장하기 위해 적용되는 규칙 또는 제약 조건 ex) 필드에 대한 고유한 값을 갖는 제약 조건, 외래 키를 가리키는 필드에 대한 참조 무결성 제약 조건 등

마이그레이션(Migration)이란?

데이터베이스의 스키마(데이터베이스 구조)를 관리하고 업데이트하는 프로세스

마이그레이션은 데이터베이스의 스키마를 변경하거나 업데이트하려는 경우, 새로운 모델을 추가하거나 기존 모델을 수정할 때 사용된다.

마이그레이션 파일은 스키마를 변경하는 명령과 변경 내용을 포함하고 있다.

이제 생성된 마이그레이션 파일을 데이터베이스에 적용해보자.

python manage.py migrate

db.sqlite에 가보니 뭐가 많이 생겼다.

저 테이블들은 Django에서 주는 기본적인 테이블들이다.

makemigrations를 하면 Django의 로직대로 SQL문을 작성해주고, migrate는 그 SQL문을 데이터베이스에 반영해준다.

마이그레이션 파일을 데이터베이스에 적용함으로써 어플리케이션을 개발하거나 변경할 때 데이터베이스에서 테이블, 필드, 제약 조건을 추가, 수정, 삭제하거나 관계를 정의하는 내용들을 추적하고 관리할 수 있다.

데이터베이스가 연결되었으니 여기에 기록을 하나 추가해볼건데, 그러기 위해서 먼저 데이터베이스를 관리하기 위해 관리자 계정을 만들어보자.

데이터베이스에 데이터 추가해보기


Django Admin란?

Django 프레임워크에서 제공하는 관리자 인터페이스

  • 데이터베이스 모델을 관리하고 관리자 페이지를 생성하며, 웹 기반으로 데이터를 추가, 수정, 삭제할 수 있다.

  • Django Admin을 사용하면 개발자가 별도의 관리자 페이지를 만들지 않아도 빠르게 관리자 인터페이스를 구축할 수 있다.

admin(관리자) 계정 만들기

[터미널에 입력]

python manage.py createsuperuser

슈퍼유저(superuser)란?

Django Admin 페이지에 접근하려면 먼저 슈퍼유저(superuser) 계정을 생성해야 한다.

슈퍼유저 계정은 관리자 권한을 가진 계정으로, Django 어플리케이션의 모든 부분을 관리할 수 있는 권한을 가지게 된다.

이제 계정 생성을 했으니 admin(관리자) 페이지를 살펴보자.

사용자 탭에 가보면,

위 관리자 페이지는 이 서비스를 이용할 수 있는 User 테이블이다. Django는 로그인, 회원가입, 회원 기능 등을 모두 만들어서 제공해준다.

이 관리자 페이지에서 사용자(user)을 추가해보고 데이터베이스의 User 테이블을 확인해보자.

나의 관리자 계정과 새로 추가한 사용자가 auth_user 테이블에 추가된 것을 볼 수 있다.

앞으로는 관리자 페이지에서 하지 않고 직접 데이터베이스에 테이블도 만들고, 사용자 요청으로 데이터를 만드는 것도 진행해보겠다.

0개의 댓글