본문 바로가기

백엔드

API에 데이터베이스 연결하기

반응형
API에 데이터베이스 연결하기

 

 

이제 본격적으로 API에 MySQL 데이터베이스 시스템을 연결하여 데이터를 저장하도록 하자.

앞서 이야기했듯이 관계형 데이터베이스 시스템은 데이터를 저장하기 전에 미리 테이블 구조와 관계를 구현해 놓아야 한다.

 

그러므로 먼저 미니터 API를 위한 테이블 구조와 관계, 즉 스키마(schema)를 구현하도록 하자.

 

스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다.
스키마는 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다.

 

미니터 API의 데이터베이스 스키마는 다음과 같을 것이다. 

 

 

 

user 테이블 : 이름, 이메일, 암호화된 비밀번호, 사용자 프로파일 등의 사용자 정보 저장

user_follow_list 테이블 : 사용자들이 다른 사용자들을 팔로우하는 리스트를 저장

tweets 테이블 : 사용자들의 트윗들을 저장한 테이블

 

 


 

 

이제 위의 테이블을 MySQL 데이터베이스에 실제로 생성하도록 하자.

그러기 위해서는 먼저 다음 명령어를 터미널에서 실행시켜서 MySQL 데이터베이스에 접속하도록 하자.

 

Mysql 서버를 설치하는 것은 생략하도록 하겠다!

https://m.blog.naver.com/bjh7007/221829548634

 

[MySQL] MySQL 다운로드 및 설치 방법(Workbench)

안녕하세요 이번에는 MySQL을 Windows10 운영체제에서 간단히 설치하는 방법에 대해서 알아보도록 하...

blog.naver.com

나는 다음 블로그를 참고하여 MySQL를 설치하였다!!

 

 


 

 

아무튼! MySQL을 실행시켜 비밀번호를 입력하라는 문구가 나오면 앞서 생성한 root 사용자의 비밀번호를 입력하면 된다. 

 

MySQL 데이터베이스에 접속한 상태이므로 지금부터 입력하는 것들은 전부 MySQL 데이터베이스상에서 실행된다.

그러므로 앞서 소개한 SQL을 사용해야 한다.

먼저 데이터베이스를 생성하자. 데이터베이스는 CREATE DATABASE 구문을 사용해서 생성하면 된다.

 

데이터베이스의 이름은 minier라고 지었다. 하지만 이름은 원하는대로 지어도 상관없다!

 

데이터베이스를 생성했으면 해당 데이터베이스를 사용하겠다고 use 명령어를 사용해서 MySQL 데이터베이스 시스템에 알려줘야 한다. 알려주지 않으면 MySQL은 어떠한 데이터베이스를 선택해야 할지 모르므로 오류가 난다.

 

 

miniter 데이터베이스를 생성하고 선택하였으면 이제 miniter 데이터베이스에 테이블들을 생성하자.

SQL에서 테이블 생성한 CREATE TABEL 구문을 사용해서 생성할 수 있다.

 

 

CREATE TABLE 구문의 기본적인 문법은 다음과 같다.

 

  • NOT NULL이라는 뜻은 해당 칼럼의 null 값이 될 수 없다는 뜻이다. 즉 해당 칼럼은 항상 값이 있어야 한다는 것이다.
  • AUTO_INCREMENT을 명시해주면 해당 칼럼의 값이 자동으로 1씩 증가된다는 뜻이다. 주로 id 값을 자동 생성하기 위해서 사용된다.
  • DEFAULT CURRENT_TIMESTAMP의 뜻은 만일 해당 칼럼의 값이 없으면 디폴트 값으로 현재 시간 값을 사용하라는 뜻이다. 주로 created_at 처럼 해당 값이 생성된 시점을 기록하는 칼럼에 주로 사용된다. 일일히 created_atㅇ 값을 지정해주지 않아도 데이터베이스가 자동으로 생성해 주므로 편리하다.
  • ON UPDATE CURRENT TIMESTAMP의 뜻은 만일 해당 로우의 값이 업데이터, 즉 수정이 되면 해당 칼럼의 값을 수정이 이루어진 시간의 값으로 자동 생성해준다는 뜻이다. 로우가 언제 업데이트 되었는지 자동으로 기록되므로 편리하다.
  • PRIMARY KEY 구문을 통해 고유 키로 사용될 칼럼을 정해준다. 고유 키는 한개의 칼럼으로 정할 수도 있지만 여러 칼럼을 정할 수도 있다. 여러 칼럼을 고유 키로 정해주면 해당 칼럼 값들을 합한 값이 고유 키가 된다.
  • UNIQUE KEY의 뜻은 해당 칼럼의 값이 중복되는 로우가 없어야 한다는 뜻이다. 이메일의 경우 이미 등록된 이메일로 중복된 등록이 되면 안 되기 때문에 UNIQUE KEY 구문을 사용해 시스템적으로 방지해 둘 수 있어서 편리하고 안전하다.
  • CONSTRAINT ... FOREIGN KEY .. REFERENCES ... 구문을 통해서 외부 키를 걸 수 있다. user_follow_list 테이블과 tweets 테이블 둘 다 user 테이블에 외부 키를 통해 연결된다.

 

 


 

 

 

테이블을 생성했으면 SHOW TABLES 명령어로 테이블들이 생성되었는지 확인해보자.

 

테이블이 제대로 생성되었다면, exit 명령어를 입력하여 MySQL 데이터베이스 시스템 접속을 종료하도록 하자.

 

 

 

 

이제 미니터 API에 데이터베이스를 연결시킬 차례다.

연결 시키는 것은 다음 포스팅에서 ~

 

 

 

 

전체 코드는 "깔끔한 파이썬 탄탄한 백엔드" 책의 깃허브 리포지토리에서 확인할 수 있다.

https://github.com/rampart81/python-backend-book/blob/master/chapter6/create_table.sql

 

GitHub - rampart81/python-backend-book

Contribute to rampart81/python-backend-book development by creating an account on GitHub.

github.com

 

 

반응형

'백엔드' 카테고리의 다른 글

엔드포인트 데이터베이스 사용하여 구현하기  (0) 2021.08.17
SQLAlchemy  (0) 2021.08.17
SQL(Structured Query Language)  (0) 2021.08.10
데이터베이스(Database)  (0) 2021.08.10
API 개발하기(미니터 : 타임라인)  (0) 2021.08.08