DX Data School

데이터베이스 연동

Kim J 2024. 1. 30. 10:39

> Docker 나 운영체제에 관계형 데이터베이스가 실행 중 인지 확인

나의 도커에서 활성화 되어있는 mysql(관계형 데이터베이스)

1) 관계형 데이터베이스 연동 방식

[1] SQL을 이용하는 방식

프로그래밍 언어의 코드에 SQL을 직접 입력하거나 SQL을 별도의 파일에 만들어두고 사용하는 방식

단점 - 관계형 데이터베이스가 변경되면 SQL을 수정해야 한다.

[2] ORM 방식

하나의 객체와 하나의 레코드를 매핑시키는 방식 / 실제 구현할 때는 클래스와 테이블을 매핑시킨다.

CRUD 작업을 할 때 SQL을 사용하지 않고 함수를 이용. 함수를 호출하면 연결된 데이터베이스에 맞게 SQL을 만들어서 작업을 수행한다. 따라서 관계형 데이터베이스가 변경 되더라도 파이썬의 코드를 수정할 필요가 없다.

but, 작업이 어렵고 잘못하면 성능 저하를 가져올 수 있다.

SI 업체에서는 SQL을 직접 사용하는 방식을 선호 / 솔루션 업체(플랫폼 기업)에서는 ORM 방식을 선호

**Django는 자체적인 ORM 엔진이 내장되어 있다

Flask는 ORM을 사용하고자 할 때 별도의 패키지를 설치해야 한다

2) 데이터베이스 연결

> 프로젝트/settings.py 의 아래 DATABASES 부분을 수정

기본적으로 sqlite3.py 에 접속하도록 설정 되어있다.

DATABASES = {
   "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": BASE_DIR / "db.sqlite3",
   }
}

> mysql로 수정하고자 하는 경우

패키지 설치 : mysqlclient

pip install mysqlclient

** Mac의 경우 패키지가 없다고 나올 경우

brew install mysql

brew install openssl

brew install pkg-config

pip install mysqlclient

를 해보시면 됩니둥

DATABASES = {
   "default": {
      "ENGINE" : "django.db.backends.mysql",
      "NAME" : "dxjh",                #데이터베이스 이름
      "USER" : "dxjh",                #접속할 계정
      "PASSWORD" : "비밀~",       #비밀번호
      "HOST" : "127.0.0.1",           #데이터베이스 접속위치
      "PORT" : "3306",                #접속할 포트번호
    }
}

> 데이터베이스 관련 작업이 수정된 경우 수행할 내용

python manage.py makemigrations

python manage.py migrate

위 2개의 명령어 입력 시 수정된 내용이 반영된다.

> 데이터베이스 접속 정보

나으 mysql 접속정보

DATABSES 목록

show databese;

DATABASE 생성

create database 이름;

DATABASE 사용

use 이름;

기존 테이블 확인

show tables;

pip install mysqlclient를 통해 패키지를 설정 하였다면 프로젝트/settings.py 파일에서 DATABASE를 자신의 접속정보에 맞춰 수정해준다.

설치가 잘 되었슴당!

수정을 완료 했다면 아까 얘기 했던, 변경된 내용을 적용하는 명령코드 2개를 실행 시킨다. 다시 알랴드림.

python manage.py makemigrations

python manage.py migrate

요 2개 기억하쇼~!

실행 시키면 알아서 뭔가 쭉쭉쭉 진행한다 !

이 과정을 거치고 나면, mysql의 내 테이블이 달라졌음을 확인 할 수 있을것이다.

 

왼쪽 이었는데 오른쪽이 되었다..!!

오늘은 여기까지 했다. 이제 막 접속하고 연동하고 하니까 얼른 뭔가 더 하고 싶어졌는데 시간이 다 됐다 아숩게도 ^^;;;;;;; 오늘도 졸음과의 싸움에서 이겨냈음에 뿌-듯 함을 느낀다.

참 재밌구나 재밌어~ 내일 계속됩니다. 안녕~~~~~~~~!

'DX Data School' 카테고리의 다른 글

데이터베이스 연동 3  (1) 2024.01.30
데이터베이스 연동 2  (1) 2024.01.30
Django 활용하여 Web Programming 실습 2  (0) 2024.01.30
Django 활용하여 Web Programming 실습  (2) 2024.01.30
Python Web Programming  (0) 2024.01.30