Django
는 기본 데이터베이스로 spllite3
를 가지고 있다.
이것을 mysql
로 변경하고 테이블이 생성이 되는 것을 확인해본다.
# 1. 가상환경 활성화
>>> conda activate testenv
# 2. 장고 설치
>>> pip install django
# 3. 장고 프로젝트 생성
>>> django-admin startproject "프로젝트이름"
# 4, 프로젝트 폴더로 이동 후 app 생성
>>> python manage.py startapp "앱이름"
어차피 한번 설정하면 새로운 프로젝트를 열때까지 두고 두고 쓰니까 장고 설치부터 표기하였다 가상환경에 장고가 이미 설치되어있으면 넘어가자.
>>> pip install mysqlclient
이때 다음과 같은 문제가 발생하였다.
안된다.
이중 mysql_config not found
키워드를 가지고 stackoverflow
를 찾아갔다.
# 오버플로우 형님들께서 은총을 내려주셨다.
# 추가로 설치 하였다.
sudo apt-get install libmysqlclient-dev
된다.
# 1. mysql 접속
>>> mysql -u root -p
# 2. 데이터베이스 생성
mysql> create database "NAME" character set utf8mb4 collate utf8mb4_general_ci;
# 3. 데이터베이스 확인
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test_db |
| westarburks_menu |
+--------------------+
6 rows in set (0.00 sec)
# 원하는 데이터베이스를 확인하면 성공!!
# app 폴더의 models.py 예시
from django.db import models
class Menu(models.Model):
name = models.CharField(max_length=20)
class Category(models.Model):
name = models.CharField(max_length=20)
menu = models.ForeignKey('Menu', on_delete=models.CASCADE)
class Product(models.Model):
name = models.CharField(max_length=100)
price = models.IntegerField()
menu = models.ForeignKey('Category', on_delete=models.CASCADE)
# project 폴더의 settings.py 예시
# 다음의 내용을 찾아서 아래와 같이 바꾸어주자
ALLOWED_HOSTS = ['*']
# Application definition
INSTALLED_APPS = [
# 'django.contrib.admin',
# 'django.contrib.auth',
'django.contrib.contenttypes',
'products.apps.ProductsConfig',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'westarburks_menu',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '3306'
}
}
# 1. migrations 폴더 만들기
>>> python manage.py makemigration products
# 2. myspl과 migrate
>>> python manage.py migrate
# mysql 접속했다 치자!
mysql> use westarburks_menu;
# westarburks_menu: 내가 테이블을 넣을 데이터 베이스
mysql> show tables;
+----------------------------+
| Tables_in_westarburks_menu |
+----------------------------+
| django_content_type |
| django_migrations |
| django_session |
| products_category |
| products_menu |
| products_product |
+----------------------------+
6 rows in set (0.00 sec)
# 요렇게 나오면 연동이 잘되었다.
이제 테이블 변경시 → makemigration → migrate 의 반복만하면 된다.