django project mysql 연결하기

장윤성·2022년 8월 22일
2

python 가상환경 만들기

일단 django를 실행하기 위해서는 가상환경을 만들어야되는데 코드는 리눅스랑 윈도우가 다르다.

# 가상환경 만들기
python -m venv [가상환경 이름]

# 가상환경 activate
# window
cd [가상환경이름]/Scripts
activate

# linux
source [가상환경이름]/bin/activate

#가상환경 끄기
deactivate

django project 만들기

일단 데이터베이스를 연결하기 전에 django project를 먼저 만들어보자.

django-admin startproject myproject

이렇게 터미널에 입력을 하면 아래의 형식으로 폴더와 파일들이 만들어진다.

C:.
└─myproject
    │  manage.py
    │
    └─myproject
            asgi.py
            settings.py
            urls.py
            wsgi.py
            __init__.py

새로운 app을 만들고 싶을때는 manage.py와 같은 루트의 경로에서

django-admin startapp myservice

터미널에 이렇게 입력하면

C:.
└─myproject
    │  manage.py
    │
    ├─myproject
    │      asgi.py
    │      settings.py
    │      urls.py
    │      wsgi.py
    │      __init__.py
    │
    └─myservice
        │  admin.py
        │  apps.py
        │  models.py
        │  tests.py
        │  views.py
        │  __init__.py
        │
        └─migrations
                __init__.py

이런 식으로 myservice폴더와 기본적인 세팅이 완료된다.

mysql 생성

일단 mysql을 사용하기 위해서는 mysql을 다운받아야 한다.
https://dev.mysql.com/downloads/windows/installer/8.0.html
기본옵션에 workbench를 다운받을 수 있도록 되어있는데, workbench로 생성할 예정이기 때문에 다운 받는 것이 좋다.
다운을 받았으면,
이런식으로 창이 뜰텐데, MySQL Connections에 +버튼을 눌러서 connection을 하나 추가해준다.

connection name, username과 필요하면 password를 입력하고 난 후에 Test Connection 버튼을 클릭했을 때,
이 창이 뜨면 연결이 완료 된 것이다. port는 왠만하면 바꾸지 않는것이 좋다. 혹시나 이미 사용하고 있는 port로 설정하는 경우에는 연결이 안되기 때문이다.

setting.py 설정

django project와 만들어놓은 MySQL connection을 연결해줘야 하는데, 이를 위한 작업은 setting.py에서 하면 된다.

# setting.py
...
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}
...

아마 처음 project를 만들면 위의 코드처럼 sqlite3가 기본적인 database로 설정이 되어있을텐데 이거를 아래처럼 바꿔주기만 하면 된다.

# setting.py
...
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydatabase',
        'USER' : 'sung',
        'PASSWORD' : 'password', # 설정한 비밀번호로 적어주면 된다.
        'HOST' : '127.0.0.1',
        'PORT' : '3306',
    }
}
...

MySql database 생성

일단 데이터베이스를 생성해야 하기 때문에 아래의 sql명령어를 통해서 데이터베이스를 생성할 수 있다.

create database mydatabase character set utf8mb4 collate utf8mb4_general_ci;

만약에 이런 오류가 발생한다면, user를 생성해서 권한을 부여하는 sql코드를 작성하면 된다.

create database mydatabase character set utf8mb4 collate utf8mb4_general_ci	
Error Code: 1044. Access denied for user 'sung'@'localhost' to database 'mydatabase'
create user userid@localhost identified by '비밀번호';
grant all privileges on *.* to userid@localhost identified by '비밀번호';

django migrate로 table 생성

이후에 django project로 이동해서 터미널에 입력을 하면 django에 필요한 다른 table을 알아서 mysql에 저장해준다.

python manage.py makemigration

python manage.py migrate

다음 프로젝트에서는 model을 만들고 serializer로 기본적인 api를 만들어보겠다.

profile
소개를 어떻게 한줄로 해요..

0개의 댓글