IT 개발/Django
[Django] 장고에서 데이터베이스 연동하여 사용하기 (MySQL, mariaDB)
KADOSHOLY
2023. 12. 24. 09:00
반응형
Django - 장고에서 데이터베이스 연동하여 사용하기
(MySQL, mariaDB)
목차
- 데이터베이스 사용법 요약
- MySQL or mariaDB 연동을 위한 환경설정
- 외부 데이터베이스 정보를 장고 model로 가져오기
- 관리자 기능 활성화 방법
- 데이터베이스 동작 확인 (읽기/쓰기)
1. 데이터베이스 사용법 요약
장고 설치후 데이터베이스에 연결하여 사용하기 위한 순서를 간략히 살펴 보면 다음과 같습니다 .
- 장고 설치 : conda install django
- 프로젝트 생성 : django-admin startproject config .
- 앱 생성 : django-admin startapp testapp
- 환경설정 : config 폴더 안에 setting.py 파일에서 환경설정
- INSTALLED_APPS 항목에서 앱 등록
- DATABASES 항목에서 데이터베이스 엔진 정보 등록
- 데이터베이스 연결 라이브러리 설치
- sqlite3 : DATABASES 항목에 default값으로 설정되어 있으며, 특별한 설정없이 바로 사용 가능합니다.
- mysql or mariaDB : pip install mysqlclient
- 앱의 모델 변경사항 저장 : python manage.py makemigrations testapp
- 변경사항을 데이터베이스에 반영 : python manage.py migrate
- 데이터베이스 동작 확인 : 읽기/쓰기 테스트
- 서버 접속 하기 : 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 파일에 넣어주면 됩니다.
- python manage.py inspectdb > models.py 실행
- 루트의 models.py 파일에서 필요한 테이블 모델 클래스 복사하기
- 데이터베이스를 사용할 앱의 models.py 파일에 붙여넣기
- python manage.py makemigrations testapp 실행
- python manage.py migrate 실행
4. 관리자 기능 활성화 방법
장고에서 관리자 기능을 사용하게 되면 데이터베이스 관리를 편리하게 할 수 있습니다.
- 관리자 정보 등록 : python manage.py createsuperuser
- 앱 폴더안에 있는 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) 데이터 조회
반응형