본문 바로가기
파이썬 웹 프로그래밍 기본

7. 정보 관리 - 7.1.데이터베이스(DB)

by 영바이트 2020. 8. 31.

이전 글들에서 파이썬 웹 프로그래밍의 기본적인 주제들에 대해 살펴보았다.

 

- 플라스크와 파이썬을 이용한 웹 서버

- 페이지 템플릿을 이용한 웹 페이지 제공

- 사용자(클라이언트)로부터 데이터 받기

- 관리 측면에서 좀 더 나은 프로젝트 구조: 패키지

 

웹 서비스의 핵심 기능을 아래 그림과 같이 요약할 수 있다.

 

<웹 서비스의 핵심 기능>

 

쇼핑몰, SNS 등 거의 모든 웹 서비스의 핵심은 정보를 관리하는 것이다. 그러면 도대체 이 정보는 어디에 들어있는(저장되는) 것일까? '4.1. 템플릿 엔진' 절의 예제에서는 posts 라는 이름의 리스트에 포스팅의 내용을 저장하였다. 내용이 많이 않으면 리스트나 딕셔너리 형식으로 데이터를 보관할 수 있겠지만 결국 프로그램이 종료되면 데이터도 사라진다. 결론적으로 실제 웹 서비스에서 데이터는 데이터베이스(DB - Database)라는 데이터를 관리해주는 별도의 프로그램으로 관리한다. 이번 절에서는 이 데이터베이스(DB)에 대해 이야기하려 한다.

 


 

데이터베이스(DB)의 자세한 내용에 대해 이야기하지는 않으려한다. 필자 역시 DB에 대해 전문적인 지식이 있는 것은 아니고 어디까지나 '필요한 만큼 계속 배우면서 사용하는' 과정에 있기 때문이다. DB의 종류에는 여러 가지가 있지만 가장 널리 사용되는 것이 관계형(Relational) DB이다. 관계형 DB는 기본적으로 테이블 형태로 데이터를 관리한다. 예를 들어 인터넷 서점의 사용자 정보는 아래와 같이 정리될 수 있다.

 

<회원정보 테이블의 예>

 

그리고 어느 한 시점의 도서 구매 정보는 아래와 같이 나타낼 수 있다.

 

<도서구매 테이블의 예>

 

이 두 테이블은 username으로 연결된다. 구매상품 정보의 username 항목을 통해 특정 도서를 구매한 회원의 연락처 등을 알 수 있다. 이와 같이 저장하는 정보의 특성에 따라 테이블을 따로 사용하고 테이블들이 특정 항목(키key라고 한다)을 통해 연결되어 있다. 관계형 DB를 줄여서 'RDB'라고도 하고 대표적으로 MySQL과 MariaDB가 있다.

※ 무료로 사용할 수 있는 공개 소프트웨어였던 MySQL이 오라클이라는 기업에 인수되면서 MySQL 개발자들이 회사를 나와 MySQL의 기능을 그대로 재현하고 개선하여 MariaDB를 만들었다.

 


 

백번 듣는 것 보다 한번 실습하면 감이 온다. MariaDB를 설치하고 테이블을 한번 만들어보자. downloads.mariadb.org로 접속하여 안정된 버전(stable version)을 다운로드한다. 여기서는 10.4 버전을 설치했다.

 

<MariaDB 다운로드 - 10.4 버전>

 

다운로드하고 설치를 진행하다보면 아래와 같이 관리자(root) 정보 입력화면이 나타나면 관리자 암호를 입력하고 환경설정 창이 나타나면 기본적으로 주어진 설정 그대로 이용해도 별 문제가 없다. 만약 설정 변경이 필요한 경우 여기서 수정하면 된다. 

 

<MariaDB 관리자정보 입력 창>

 

<MariaDB 동작설정 입력 창>

 

그리고 아래와 같이 MariaDB 사용정보를 익명으로 제공하는데 동의를 구하는 옵션을 선택할 수 있는 창이 나타나는데 반드시 동의할 필요는 없다.

 

<Maria DB 사용정보 익명제공 동의 창>

 


 

MariaDB 설치를 마쳤으면 DB에 접속해보자. 윈도우의 경우 명령 프롬프트(command prompt)를 실행시키고 MariaDB가 설치된 위치로 이동한다. 따로 설치 위치를 변경하지 않았다면 ‘C:\Program Files\MariaDB 10.4\bin’위치에 설치되었을 것이다.

 

<윈도우 - 명령 프롬프트>

 

MariaDB가 설치된 위치로 이동했으면 아래 명령을 입력하여 DB에 관리자(root)로 접속한다.

 

※ $>를 윈도우 커맨드 프롬프트, >를 Maria DB 프롬프트로 구분하였다.

 

$> mysql -u root -p

 

사용자(-u)를 root로 패스워드(-p)를 사용하여 DB에 접속하겠다는 의미이다. 암호는 MariaDB 설치 시 입력했던 패스워드를 입력하면 된다. 아래 그림과 같이 Maria DB 커맨드 프롬프트가 나타날것이다.

 

<MariaDB에 root 사용자로 접속>

 

DB에 커맨드를 전달하기 위해 SQL(Structured Query Language)를 사용할 것이다. SQL까지 공부하면 좋겠지만 일단 DB가 어떤 것인지 체험하기 위해 아래 과정들을 따라해보자. 그리고 이어지는 글들에서 DB를 사용할 때는 SQL이 아닌 파이썬 스크립트를 이용해서 DB를 다루어 보도록 하겠다.

 

아래 명령어를 입력하여 flaskdb라는 이름으로 데이터베이스를 하나 만들어보자(여기서 생성하는 '데이터베이스'는 DB 프로그램 안에 실제 데이터가 보관되는 공간인 데이터베이스를 지칭한다. 조금 헷갈릴 수도 있지만 원래 명칭을 그대로 사용한다).

 

> create database flaskdb;

 

그리고 데이터베이스가 생성되었는지 확인해보자.

 

> show databases;

 

<데이터베이스 생성 및 확인>

 

관리자(root)로 DB를 이용하는 것 보다 제한된 권한을 가진 사용자를 생성하여 DB의 필요한 부분만 이용하는 것이 좋다. 왜냐하면 관리자의 권한이 탈취되거나 남용되면 데이터베이스를 엉망으로 만들 수 있기 때문이다. flaskweb이라는 이름의 사용자를 생성하고 생성한 flaskdb의 사용 권한을 넘겨주자.

 

> create user 'flaskweb'@'localhost' identified by 'your_password';

 

‘your_password’에는 생성하는 flaskweb 사용자의 암호를 입력한다.

 

> grant all privileges on flaskdb.* to 'flaskweb'@'localhost' identified by 'your_password';

 

<flaskweb 사용자 생성과 flaskdb 데이터베이스 사용권한 넘겨주기>

 

이제 관리자는 로그아웃하고 새로 만든 사용자 flaskweb으로 DB에 다시 접속하자.

 

> exit;
$> mysql –u flaskweb –p

 

사용할 수 있는 데이터베이스가 어떤 것이 있는지 살펴보고 관리자로부터 넘겨받은 flaskdb 데이터베이스를 사용하도록 설정한다.

 

> show databases;
> use flaskdb;

 

<flaskweb 사용자로 접속하여 flaksdb 데이터베이스 사용하기>

 

이제 DB는 준비가 되었다. 즉, 데이터를 보관할 빈 공간이 만들어진 것이다. 이어지는 포스팅들에서 파이썬 스크립트를 이용해서 DB에 데이터를 입력하고 읽는 기본적인 동작을 살펴보도록 하겠다.

 

댓글