본문 바로가기

Project/Python

Blog project - Database

Blog project

 Database

 

 블로그의 기본적인 페이지를 만들었습니다.  백엔드를 맡고 있는  flask 와   프론트엔드를 맡고 있는  HTML 그리로 이 두 프레임워크를 연결하기 위해  jinja  라는 파이썬 라이브러리를 사용했습니다. 더 세부적으로 만들면 프론트엔드를 좀 더 자연스럽게 만들기 위해  Bootstrap 을 그리고 디자인에는   CSS 를 좀 더 세부적으로 적용하였습니다. (시간을 단축하기 위해 강의에서 젝공하고 있는 공개되어 있는 디자인을 활용하였습니다. 공대출신에게 디자인은 다른 차원을 설명하는 수학 공식 보다 어렵습니다. )

 ‘데이터베이스’는 간단하게 저장을 하는 공간입니다.  컴퓨터에서 예전의 ‘하드디스크’ 요즘에는 ‘ SSD’ 같은 역할을 하는 곳입니다. 공들여 만든 여러 컨텐츠를 저장하지 않는다면 블로그의 기능을 제대로 할 수는 없습니다. 시중에는 다양한 데이터베이스가 서비스 되고 있습니다. 가장 유명한 것들로는  Oracle, MySQL, MongoDB  등이 있습니다.  

 다양한 데이터베이스 들이 있고 많은 서비스들이 오픈소스로 공개되어 있습니다.  이중에 블로그 프로젝트에 활용할 것은 SQLite 입니다. 만약 대규모 서비스를 운영하고자 한다면 검증되어 있는 다른 데이터 베이스를 사용해야 하겠지만 개인이 운영하는 작은 블로그에 큰 데이터베이스를 붙이는건 파리를 잡는데 대포를 사용하는 것과 같습니다.  추후에  MySQL 이나  마리아DB 같은 대규모 서비스에 맞는 데이터베이스도 설치해보는 연습을 해보겠습니다. 

데이터베이스를 구성하는 기본 개념은  “CRUD” 로 요약됩니다.   Create, Read, Update, Delete 의 줄임말 입니다. 사용자에 의해서 만들어진 데이터는 크게 위의 네단계를 거치는 주기를 갖습니다. 거의 모든 데이터베이스는 위의 개념위에 다양한 명령과 구조를 갖고 있습니다.   제가 실습해볼  SQLite 도 마찬가지 입니다. 자세한 내용은 SQLite 의 공식문서에 자세하에 설명되어 있습니다. 

docs.python.org/ko/3/library/sqlite3.html

 

sqlite3 — SQLite 데이터베이스용 DB-API 2.0 인터페이스 — Python 3.9.1 문서

바로 가기 메서드 사용하기 Connection 객체의 비표준 execute(), executemany() 및 executescript() 메서드를 사용하면, (종종 불필요한) Cursor 객체를 명시적으로 만들 필요가 없으므로, 코드를 더 간결하게 작

docs.python.org

 

첫번쨰로 Create 명령을 알아 보겠습니다. 

 

# sqlite3 모듈을 프로젝트에 불러 옵니다.
import sqlite3  

# 데이터베이스 파일을 연결합니다. 없을 경우 새로 생성합니다. 
conn = sqlite3.connect(‘blog.db’)

#커서를 만들어 테이블을 편집할 수 있게 합니다.
c = conn.cursor()

# 테이블을 만듭니다. 
c.execute(‘’’CREATE TABLE  blog(id Integer, title String, body String, author String , img_url String)’’’)

# 테이블에 자료를 입력합니다. 
c.execute(“INSERT INTO blog VALUES (‘1’,’first writing,’Nothing Special’,’jisungs’, ‘https//: www.google.com’)”)

# 입력한 자료를 저장합니다. 
conn.commit()

#데이터 베이스와 연결을 끊습니다.
conn.close()

 

두번째로  Read  명령을 알아 보겠습니다.

 

#열에 있는 내용을 선택합니다. 
for row in con.execute(“select   title , body from body”):
    print(row)

 

이것은 하나의 예시일 뿐입니다.  Excute   를 활용한 다양한 데이터 출력방법이 있습니다.

 

 

세번째로 Update  명령을 알아보겠습니다.

for row in con.execute("update   title , body from body”):
    print(row)

 

 

네번째로 Delete  명령을 알아 보겠습니다.

for row in con.execute("delete   title ”):
    print(row)

 

위에서 간략하게 알아 본것 처럼 명령어를 바꾸는 것 만으로 자료를 삭제하거 업데이트할 수 있습니다. 

 

 데이터베이스를 명령어로 활용할 수 있는 것 만으로도 놀라운 일이긴 하지만 매번 데이터 베이스를 수정 할때마다 연결하고 끊는 작업을 반복 하는 것은 번거롭기도 합니다. 이런 번거로움을 느낀 개발자가 아마 한두명이 아니었나 봅니다. 파이썬에서는 이 데이터베이스를 좀 더 간편하게 만들기 위한 라이버리가 개발 되어 있습니다.  SQLAlchemy  입니다. 다음 글에서는 이 라이브러리에 대해 간략하게 알아보고 그 내용을 적용해 보겠습니다. 

 

 

2021/02/01 - [Toy Project/Python] - Blog Project - Start

 

Blog Project - Start

Blog Project Start  안녕하세요 ? 저는 지성이라고 합니다. 한국에 살고 있는 평범한 직장인중 한명입니다. 저는 취미로 컴퓨터를 공부하고 있습니다.  “컴퓨터” 에도 다양한 분야가 있지만 저는

jisungsdevstroy.tistory.com

2021/02/02 - [Toy Project/Python] - Blog project - Back_end

 

Blog project - Back_end

Blog project Back-end  “Web Application”을 만드는 일은 다양한 기술의 조합으로 이루어집니다.  처음 이 일을 시작했던 때를 떠올려 보면 이 많은 것을 언제다 공부하나 하는 막막..

jisungsdevstroy.tistory.com

2021/02/03 - [Toy Project/Python] - Blog project - Front-end

 

Blog project - Front-end

Blog Project Front-end 지난 번에는 백엔드 즉 눈에는 보이지 않는 서버 쪽의 코드를 살펴 보았습니다. 최대한 간단하게 구성하기 위해 “데이터베이스”나 “배포”를 위한 내용은 포

jisungsdevstroy.tistory.com

2021/02/04 - [Toy Project/Python] - Blog project - Bootstrap

 

Blog project - Bootstrap

Blog project Bootstrap  안녕하세요 지성입니다. 저는 지금 블로그를 만들어 가고 있습니다. 지난 글에서 서버 단에서 작동하는 코드는 최대한 간단하게 구성했고 웹에서 작동하는 프런트엔드 코드

jisungsdevstroy.tistory.com

2021/02/05 - [Toy Project/Python] - Blog project - GET/POST

 

Blog project - GET/POST

 Blog project GET/POST  안녕하세요 저는 지성이라고 합니다.  이 프로젝트는 ‘블로그’를 만들어 가는 과정을 기록한 것입니다.  ‘블로그’라는 서비스의 특성상 텍스트 형태의 내용을 사

jisungsdevstroy.tistory.com

 

'Project > Python' 카테고리의 다른 글

Blogproject - Flask-wtf  (0) 2021.03.18
Blog project -SQLAlchemy  (0) 2021.02.23
Blog project - GET/POST  (0) 2021.02.05
Blog project - Bootstrap  (0) 2021.02.04
Blog project - Front-end  (0) 2021.02.03