카테고리 없음

Django - DB 세팅을 해보자!!

오쟝 2024. 11. 2. 22:54

 

 

 

venv 설치 방법은 전 게시물로 확인하기!

 

python manage.py startapp 만들고자 하는 프로젝트 이름

 

이때!startapp과 startproject가 있다!!!

django-admin startproject

startproject 명령어는 Django 프로젝트의 기본 구조를 생성
구성 요소: 프로젝트 디렉토리와 settings.py, urls.py, wsgi.py, manage.py 등을 포함하는 프로젝트의 루트 구조가 생성됨

 

python manage.py startapp

 startapp 명령어는 Django 앱의 기본 구조를 생성 애플리케이션은 프로젝트 내에서 특정 기능(예: 블로그, 사용자 관리 등)을 구현하는 모듈
models.py, views.py, urls.py, admin.py, apps.py, migrations 디렉토리 등으로 구성됩니다.

 

만들고자 하는 앱에 필요한 기능에 따라 다운받기!!  

 

Mysql 워크벤치에서 mysql connections 생성!

 

생성하기 버튼을 눌린 후 만드려는 벤치의 이름을 적어주기!

이때 포트 번호 수정시 오류가 발생할 수도 있기 때문에 되도록 건들지 않도록 하자!!

 

스키마를 생성한다!

 

만드려는 스키마의 이름을 설정!

Charset/Collation은 utf8, utf8_bin으로 설정한다!

 

 

Apply 버튼을 눌러 스키마 생성을 완료한다!

 

 

Users and Privileges를 눌러 Add Account를 한다!

Login Name, Password를 설정해주고 

 

Schema Privileges를 눌러 

 

Add Entry를 해 스키마를 추가해준다!

그 다음

 

필요한 사항들에 체크해주면 mysql connections는 설정 끝!!

 

이제 vs code에 들어가서 프로젝트 파일에 있는 settings.py를 수정해준다!

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'settings를 포함하고 있는 폴더 이름'
]

 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'MySql Connections 이름',
        'USER' : 'Add Account 할 때 입력해둔 user',
        'PASSWORD' : 'Add Account 할 때 입력해둔 password',
        'HOST' : '127.0.0.1',
        'PORT' : '3306'
    }
}

 

그 다음으로는 models.py에 데이터베이스를 설정해준다!

from django.db import models

class Combination(models.Model):
    user_name = models.CharField(max_length=100)
    menu_name = models.CharField(max_length=100)
    items = models.JSONField()

    def __str__(self):
        return self.menu_name

 

위와 같이 테이블을 정의해준다!

만약 사용자의 아이디와 비밀번호를 저장하는 테이블이라면

 

class Client(models.Model):
    user_id = models.CharField(maxLength=20)
    user_pw = models.CharField(maxLength=20)
    
    def __str__(self):
    	return self.user_id

 

이후 터미널에

 python manage.py makemigrations
 python manage.py migrate

 

코드를 통해 수정사항을 업데이트 해 준다!

 

정의된 테이블을 사용하기 위해서는

 

from .models import Combination

def save_combinations(request):
    if request.method == "POST":
        data = json.loads(request.body)
        user_name = data.get("user_name")
        menu_name = data.get("menu_name")
        items = data.get("items")

        print(data)
        
        combination = Combination.objects.create(
            user_name=user_name,
            menu_name=menu_name,
            items=items
        )
        combination.save()

        return JsonResponse({"status": "success", "message": "조합이 성공적으로 저장되었습니다!"})
    return JsonResponse({"status": "fail", "message": "잘못된 요청입니다."})

 

위와 같이 .models에서 Combination을 불러와 create를 사용하여 새로운 필드를 추가하고, save 함수를 통해 db에 저장하면 끝!!