Django์์ MySQL ์ฐ๋ํ๊ธฐ
1. MySQL ์๋ฒ ์ค์น ๋ฐ DB ์ค๋น
-- MySQL์์ ์คํ (์: MySQL Workbench, CLI)
CREATE DATABASE aloha CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- ์ฌ์ฉ์ ์์ฑ ๋ฐ ๊ถํ ๋ถ์ฌ
CREATE USER 'aloha'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON aloha.* TO 'aloha'@'localhost';
FLUSH PRIVILEGES;
SQL
๋ณต์ฌ
2. MySQL ํด๋ผ์ด์ธํธ ๋๋ผ์ด๋ฒ ์ค์น
# pip๋ก mysqlclient ์ค์น (๊ถ์ฅ)
pip install mysqlclient
# ๋์ฒด ์ต์
(Windows์์ ์ค์น ์ด๋ ค์ธ ๊ฒฝ์ฐ)
# pip install pymysql
Shell
๋ณต์ฌ
mysqlclient๋ C ๊ธฐ๋ฐ์ด๋ฏ๋ก Linux/Mac์์ ์ฑ๋ฅ ์ข๊ณ ์์ ์ ์
๋๋ค.
Windows์์๋ ์ค์น ๋ฌธ์ ์ pymysql๋ ์ฌ์ฉ ๊ฐ๋ฅ.
3. Django ํ๋ก์ ํธ์ DB ์ค์ 




# mysite/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # MySQL ๋ฐฑ์๋ ์ฌ์ฉ
'NAME': 'aloha', # DB ์ด๋ฆ
'USER': 'aloha', # DB ์ฌ์ฉ์
'PASSWORD': '123456', # ๋น๋ฐ๋ฒํธ
'HOST': 'localhost', # ๋๋ IP ์ฃผ์
'PORT': '3306', # ๊ธฐ๋ณธ ํฌํธ
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
},
}
}
Python
๋ณต์ฌ
4. ๋ง์ด๊ทธ๋ ์ด์
๋ฐ ํ
์คํธ
# ์ฑ ์์ฑ ๋ฐ ๋ชจ๋ธ ์ ์ ํ
python manage.py makemigrations
python manage.py migrate
# ๊ด๋ฆฌ์ ์์ฑ
python manage.py createsuperuser
Shell
๋ณต์ฌ
MySQL DB์ ํ
์ด๋ธ์ด ์ ์์ฑ๋๋์ง ํ์ธํฉ๋๋ค.
5. pymysql ์ฌ์ฉํ๋ ๊ฒฝ์ฐ (์ ํ์ฌํญ)
# settings.py ๊ฐ์ฅ ์์ ์ถ๊ฐ
import pymysql
pymysql.install_as_MySQLdb()
Python
๋ณต์ฌ
ENGINE์ ๊ทธ๋๋ก 'django.db.backends.mysql' ์ ์งํฉ๋๋ค.
6. ๋ฌธ์ ์ธ์ฝ๋ฉ ๋ฌธ์ ๋ฐฉ์ง
MySQL DB ์์ฑ ์ utf8mb4 ์ฌ์ฉ ๊ถ์ฅ:
CREATE DATABASE aloha CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
SQL
๋ณต์ฌ
OPTIONS์ ๋ค์๋ ์ถ๊ฐ ๊ฐ๋ฅ:
'OPTIONS': {
'charset': 'utf8mb4',
}
Python
๋ณต์ฌ
์ค์ต ๊ณผ์ ์์
์ค์ต ์ ๋ชฉ | ๋ด์ฉ |
์ฌ์ฉ์ ๋ชฉ๋ก ์ ์ฅ | MySQL DB์ ์ฌ์ฉ์ ์ด๋ฆ, ์ด๋ฉ์ผ ์ ์ฅ |
๊ฒ์๊ธ ์ ์ฅ ์ฑ | Post ๋ชจ๋ธ์ MySQL์ ์ ์ฅํ๊ณ ์กฐํ |
๊ด๋ฆฌ์ ํ์ด์ง ์ฐ๋ | MySQL ๋ฐ์ดํฐ๊ฐ Django Admin์์ ์ ๋ณด์ด๋์ง ํ์ธ |
ํธ๋ฌ๋ธ์ํ
ํ
๋ฌธ์ | ํด๊ฒฐ ๋ฐฉ๋ฒ |
'MySQLdb' not installed | pip install mysqlclient ๋๋ pymysql ์ฐํ |
ํ๊ธ ๊นจ์ง | utf8mb4 charset ์ฌ์ฉ |
DB ์ฐ๊ฒฐ ์ค๋ฅ | DB ๋ช
, ํฌํธ, ์ฌ์ฉ์, ๋น๋ฐ๋ฒํธ ์ฌํ์ธ |
migrate ์ ์ค๋ฅ | mysqlclient ์ฌ์ค์น ํ ์งํ |