먼저 Mysql이나 Mariadb가 설치되지 않았다면 아래 링크를 따라 설치를 진행하고 이번 포스팅을 진행하면 되겠습니다.

nalara12200.tistory.com/163?category=887586

 

[Django] 3. Mysql 설치 및 DB,Table 생성, 접속 계정 권한부여

Django와 Mysql 연동시 필수적으로 아래 명령어를 통해 2가지를 설치해야 합니다. [명령어] sudo apt-get install default-libmysqlclient-dev sudo apt-get install gcc 이후 아래 사항을 하나씩 진행해보겠습니..

nalara12200.tistory.com

DB정보

- DB명 : test

- Table : web

 

 

 

1. mysqlclient 설치

[명령어]

pip install mysqlclient

[설치에러시]

만약 이와 같은 에러발생시 "gcc"를 지우고 재설치를 진행하면 됩니다.

sudo apt-get remove gcc //제거
sudo apt-get install gcc //설치

성공적으로 설치되었습니다.

 

2. "web/settings.py" 수정

[수정전]

[수정후]

위와 같이 수정합니다.

작성양식은 아래 소스를 참고해주시면 될 것 같습니다.

 

[소스]

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '[DB]',
        'USER': '[ID]',
        'PASSWORD': '[비밀번호]',
        'HOST': '[로컬/원격지주소]',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"'
        }
    }
}

 

 

3. "main/models.py" 수정

[명령어]

python manage.py inspectdb

위 명령어를 사용하여 해당 DB의 테이블 스키마를 불러올 수 있습니다.

 

[명령어 결과]

위 부분을 그대로 복사하여 "main/models.py"에 붙여 넣기하면 됩니다.

[DB적용]

python manage.py makemigrations

[설정 적용]

python manage.py migrate

 

4. "dbconn.html" 생성

[소스]

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {% for value in result %}
        id: {{ value.id }} <br />
        pw: {{ value.pw }}
    {% endfor %}
</body>
</html>

html에 넘겨받을 데이터가 "object"타입이기 때문에 Django 템플릿 코드의 for문을 통해 id, pw를 추출하는 소스코드 입니다.

 

4. "main/urls.py" 수정

[소스]

path('dbconn/', views.dbconn),

"http://도메인/main/dbconn"을 통해 해당 페이지 접속할 예정입니다.

 

5. "main/views.py" 수정

[소스]

from .models import Web

def dbconn(request):
    result = Web.objects.all()
    data = {
        'result': result,
    }
    return render(request, 'main/dbconn.html', data)

 

위의 소스는 "main/models.py"에 정의된 "Web"이라는 모델을 import 시켜 모든 데이터 값을 가져오는 소스입니다.

이후 가져온 결과를 "data"라는 딕셔너리에 담아 "dbconn.html"로 전송하게 됩니다.

 

6. 실행 결과

[실행 명령어]

python manage.py runserver 8000

 

[결과]

이처럼 기존의 Mysql과 연동하여 데이터를 주고 받을 수 있습니다.

 

+ Recent posts