IT 개발/Django

[Django] 장고에서 데이터베이스 연동하여 사용하기 (MySQL, mariaDB)

KADOSHOLY 2023. 12. 24. 09:00
반응형

 

Django - 장고에서 데이터베이스 연동하여 사용하기

(MySQL, mariaDB)

 

 

   목차

  1. 데이터베이스 사용법 요약
  2. MySQL or mariaDB 연동을 위한 환경설정
  3. 외부 데이터베이스 정보를 장고 model로 가져오기
  4. 관리자 기능 활성화 방법
  5. 데이터베이스 동작 확인 (읽기/쓰기)

 

 

1. 데이터베이스 사용법 요약

 

장고 설치후 데이터베이스에 연결하여 사용하기 위한 순서를 간략히 살펴 보면 다음과 같습니다 .

  1. 장고 설치 : conda install django
  2. 프로젝트 생성 : django-admin startproject config .
  3. 앱 생성 : django-admin startapp testapp
  4. 환경설정 : config 폴더 안에 setting.py 파일에서 환경설정
    • INSTALLED_APPS 항목에서 앱 등록 
    • DATABASES 항목에서 데이터베이스 엔진 정보 등록
  5. 데이터베이스 연결 라이브러리 설치 
    • sqlite3 : DATABASES 항목에 default값으로 설정되어 있으며, 특별한 설정없이 바로 사용 가능합니다.
    • mysql or mariaDB : pip install mysqlclient
  6. 앱의 모델 변경사항 저장 : python manage.py makemigrations testapp
  7. 변경사항을 데이터베이스에 반영 : python manage.py migrate
  8. 데이터베이스 동작 확인 : 읽기/쓰기 테스트
  9. 서버 접속 하기 : python manage.py runserver

 

 

 

2. 데이터베이스 엔진 정보 등록 방법 (MySQL or mariaDB)

 

MySQL과 mariaDB의 정보 등록 방법은 동일하며, setting.py 파일에서 DATABASES 란에 기존의 sqlite3 내용을 삭제 후 아래 내용을 입력해 주시면 됩니다.

 

1) config > setting.py

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "test_db", 
        "USER" : "test", 
        "PASSWORD" : "1234",
        "HOST" : "localhost", 
        "PORT" : "3306",
    }
}

 

 

 

3. 외부 데이터베이스 정보를 장고 model로 가져오기

 

MySQL, mariaDB와 같은 외부 데이터베이스를 사용하고자 할 때, 장고에는 장고에 연결되어 있는 데이터베이스 정보를  모델 클래스로 생성해주는 기능이 있습니다. 

 

사용방법은 아래 1번 명령어를 실행하게 되면 루트에 models.py 파일이 생성되고 그 안에 장고에 연결되어 있는 데이터베이스에 대한 모델 클래스들이 들어 있습니다. 이중 필요한 모델을 클래스를 복사하여 내가 사용하고자 하는 앱의  models.py 파일에 넣어주면 됩니다. 

 

  1. python manage.py inspectdb > models.py 실행
  2. 루트의 models.py 파일에서 필요한 테이블 모델 클래스 복사하기
  3. 데이터베이스를 사용할 앱의 models.py 파일에 붙여넣기
  4. python manage.py makemigrations testapp 실행
  5. python manage.py migrate 실행

 

 

 

4. 관리자 기능 활성화 방법

 

장고에서 관리자 기능을 사용하게 되면 데이터베이스 관리를 편리하게 할 수 있습니다. 

 

  1. 관리자 정보 등록 : python manage.py createsuperuser
  2. 앱 폴더안에 있는 admin.py 파일에 관리 데이터 테이블 등록 

1) testapp > admin.py

from django.contrib import admin
from .models import TestTb

admin.site.register(TestTb)

 

 

1) 관리자 사이트 접속 화면 ( http://127.0.0.1:8000/admin)

 

 

 

 

5. 데이터베이스 동작 확인 (읽기/쓰기)

 

외부 데이터베이스와 정상적으로 연동이 되었다면 이제 장고에서 데이터베이스에 데이터를 쓰고 읽어 볼 수 있습니다. 

 

1) testapp > view.py

from django.shortcuts import render
from django.http import HttpResponse
from .models import TestTb

def insert(request):
    TestTb.objects.create(id=4, name='가가가', age=10)
    TestTb(id=5, name='나나나', age=20).save()
    return HttpResponse("데이터가 입력되었습니다.")
    
def show(request):
    testtb = TestTb.objects.all()
    result = ""
    for t in testtb:
        result += str(t.id) + ": " + t.name + ", " + str(t.age) + "<br>"
    return HttpResponse(result)

 

2) config > urls.py

from django.contrib import admin
from testapp import views

urlpatterns = [
    path("admin/", admin.site.urls),

    path("show", views.show),
    path("insert", views.insert),
]

 

 

[실행결과]

 

1) 데이터 입력

 

2) 데이터 조회

 

반응형