Search
Duplicate

Django x MySQL ์—ฐ๋™

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 ์žฌ์„ค์น˜ ํ›„ ์ง„ํ–‰