Flask Heroku Pandas Postgres 튜토리얼
Page content
강의 홍보
- 취준생을 위한 강의를 제작하였습니다.
- 본 블로그를 통해서 강의를 수강하신 분은 게시글 제목과 링크를 수강하여 인프런 메시지를 통해 보내주시기를 바랍니다.
스타벅스 아이스 아메리카노를 선물
로 보내드리겠습니다.
- [비전공자 대환영] 제로베이스도 쉽게 입문하는 파이썬 데이터 분석 - 캐글입문기
개요
- Flask 기본적인 작동 원리를 배운다.
- Postgres와 SQLAlchemy를 활용한다.
- Heroku에 배포를 진행한다.
사전준비
- Github에 각 개인에게 맞는 Github Repo를 생성한다.
- 주의 : 반드시 Unique하게 작성해야 한다.
- 가상환경 설정을 진행한다.
- PostgreSQL DB 설정은 다음을 참조한다.
virtualenv venv
- 주요 라이브러리를 설치한다.
pip install Flask psycopg2 SQLAlchemy pandas gunicorn
배포
- 프로젝트 시작 전에는 항상 선 배포를 하고 시작한다.
- app.py를 만들어본다.
# -*- coding: utf-8 -*-
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "Hello World!"
-
3개의 파일이 필요하다.
- Procfile
web: gunicorn app:app
- runtime.txt
python-3.9.12
- requirements.txt 파일은 터미널에서 생성한다.
pip freeze > requirements.txt
-
이제 Heroku에 배포를 시작한다.
heroku login
heroku create your_project_repo
git add .
git commit -m "initial updated"
git push # github repo에 추가
git push heroku main
- 이렇게 정상적으로 나오는지 확인한다.
Postgres 설정
- 먼저 Local에서 PostgreSQL을 다운로드 하여 설치 한후, 시스템 환경 변수 설정을 한다.
- 설치 파일 : https://www.postgresql.org/download/windows/
- 참고 : https://devcenter.heroku.com/articles/heroku-postgresql#set-up-postgres-on-windows
- 설치 버전은 다를 수 있는 각자 본인에 맞는 설치 버전을 참조한다.
- 그 후에 Heroku에서 Postgres 설정 하기 위해 Addon 싸이트에 접속한다.
-
설정 방법은 크게 2가지 있다.
- CLI에서 설치하는 방법
heroku addons:create heroku-postgresql:hobby-dev
- Web UI를 통해 설치하는 방법
- Install Heroku Postgres 버튼 클릭 후 아래 화면과 같이 본인에 맞는 프로젝트를 연결한다.
-
이제 필요한 것은 URI 접속 경로이다.
- Heroku Postgres를 클릭한다.
- 아래 화면에서, Settings 탭을 누른 후, View Credentials를 클릭한다.
테이블 생성 및 데이터 추가 및 조회
Local Version
- Local 버전에서 iris 테이블을 불러온 후 PostgreSQL에 추가하는 코드를 app.py에 아래와 같이 추가한다.
# -*- coding: utf-8 -*-
from flask import Flask
import pandas as pd
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
## DB 연결 Local
def db_create():
# 로컬
engine = create_engine("postgresql://postgres:1234@localhost:5432/chatbot", echo = False)
# Heroku
engine = create_engine("postgresql://mzgnoxixyinhjd:d7ac5c7c91e4b4b82bfbdc56dc09a762cf9025423f26c0d0d5d0a6a1a6442765@ec2-34-235-31-124.compute-1.amazonaws.com:5432/dfqa3qaa76tclf", echo = False)
engine.connect()
engine.execute("""
CREATE TABLE IF NOT EXISTS iris(
sepal_length FLOAT NOT NULL,
sepal_width FLOAT NOT NULL,
pepal_length FLOAT NOT NULL,
pepal_width FLOAT NOT NULL,
species VARCHAR(100) NOT NULL
);"""
)
data = pd.read_csv('data/iris.csv')
print(data)
data.to_sql(name='iris', con=engine, schema = 'public', if_exists='replace', index=False)
app = Flask(__name__)
@app.route("/")
def index():
db_create()
return "Hello World!"
if __name__ == "__main__":
db_create()
app.run()
- 이제 Flask 파일을 실행한 후, 정상적으로 DB가 들어가졌는지 확인한다.
python app.py
Heroku Version
- 이제 Heroku에 동일하게 파일을 올리도록 한다.
- 이 때 변경할 것은 URI만 변경해주고 다시 Push 해준다.
git add .
git commit -m "initial updated"
git push # github repo에 추가
git push heroku main
- 코드를 수정했기 때문에, 우선 웹사이트가 열리는지를 확인해야 한다.
- 이번에는 pg admin에 새로운 서버를 생성 후, 확인해본다. 먼저 아래와 같이 새로운 서버를 작성한다.
- 그 후에 본인에게 맞는 DB를 찾고 아래와 같이 조회가 되는지 확인한다.