MongoDB + Flask

데이터수집을 위한 ~~~

Flask 정의

Python으로 구동되는 웹 프레임워크로, 내가 만든 프로그램에 서버를 구동시켜주는 편한 코드 모음이다. 서버를 구동하려면 필요한 복잡한 일들을 쉽게 가져다 쓸 수 있다.

Flask 시작하기

Flask 패키지 설치하기

1. Pycharm에서 좌측 상단에 File -> Settings 을 클릭

2. 좌측에 [Project: 패키지 이름] -> Python interprefer 을 클릭 -> "+"를 클릭

3. Available Packages에서 flask를 검색 -> flask 클릭 -> Install Package 클릭

3-1. 위에 패키지가 설치가 안될 경우, 하단에 Terminal 클릭 후, "pip install flask"를 입력

Flask 기본 코드[1]

<1> from flask import Flask flask라는 패키지에서 Flask 모듈을 import해줘서 플라스크를 사용할 수 있게 설정한다.

<2> app = Flask(__name__) Flask 인스턴스를 생성한 것으로 python에서 __name__은 모듈의 이름을 뜻한다.

<3> @app.route('/') 함수 상단에 "@"를 통해 라우팅 경로를 지정해 놓았고 그 코드가 바로 @app.route('/') 이다. URL의 '/' 경로를 요청하면 하위에 기재된 코드를 실행하는 것이다. 이런 식으로 경로를 설정하여 다른 동작을 하게 하는 것을 라우팅이라고 한다.

<4> if __name__ == '__main__' : 이 코드는 모듈을 import해서 사용하는 경우인지 직접 실행한 경우인지를 구분하기 위한 것이다. 이 namemain이라는 값을 가지게 되면 해당 모듈이 주 프로그램이고, 해당 모듈을 실행시키지 않고 import 했을 때는 모듈 이름이 name으로 들어가게 된다는 의미이다.

Flask 기본 폴더 구조

Flask 서버를 만들 때, 프로젝트 폴더 안에 static 폴더(css, images, javascript 파일을 넣어두는 폴더), templates 폴더(html 파일을 넣어두는 폴더), app.py(프로그램을 실행시키는 파일)을 항상 만들어두어야 한다.

Flask HTML 파일 불러오기

템플릿에 사용되는 파일들은 templates 디렉터리에 저장되며 일반적으로 HTML 파일을 담아두고, 불러오는 역할을 한다. 어플리케이션 상에서 이러한 html 파일들을 변할 수 있도록 Flask에서는 render_templates를 제공한다. Jinja2 템플릿 엔진을 사용해서 html 문서 내에 코드 조각들을 삽입하여 웹 페이지를 동적으로 연결할 수 있다.[2]

MongoDB 정의

MongoDB는 기본적으로 분산 데이터베이스로, 고가용성과 수평 확장, 지리적 분포가 내장되어 사용하기 쉽고, JSON과 유사한 문서에 데이터를 저장한다. 필드는 문서마다 다를 수 있으며 시간에 따라 데이터 구조를 변경할 수 있다.[3] 파이썬에서는 MongoDB를 수집하여 사용할 때 가장 많이 사용하는 라이브러리인 pymongo를 사용한다.

pymongo 시작하기

pymongo 패키지 설치하기

1. Available Packages에서 pymongo를 검색 -> pymongo 클릭 -> Install Package 클릭

1-1. 위에 패키지가 설치가 안될 경우, 하단에 Terminal 클릭 후, "pip install pymongo"를 입력

pymongo 기본 코드

Reference

[1] [스파르타코딩클럽 4주차][python/flask] Flask 시작하기 https://velog.io/@rimu/pythonflask-Flask%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B0%84%EB%8B%A8%ED%95%9C-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC

[2] Flask로 만드는 블로그 - 템플릿 https://opentutorials.org/module/3669/22003

[3] 코딩스타트 - MongoDB란?(NoSQL,Document) https://coding-start.tistory.com/273

Last updated