[python] Flask를 사용한 파이썬 웹 서버 구축하기

Flask는 파이썬으로 웹 애플리케이션을 개발하기 위해 사용되는 간단하고 유연한 마이크로 프레임워크입니다. 이 블로그 포스트에서는 Flask를 사용하여 파이썬으로 웹 서버를 구축하는 방법에 대해 살펴보겠습니다.

Flask 설치하기

먼저, Flask를 설치해야 합니다. 아래의 명령어를 사용하여 Flask를 설치할 수 있습니다.

pip install flask

Hello World 웹 애플리케이션 만들기

Flask를 사용하여 간단한 Hello World 웹 애플리케이션을 만들어보겠습니다.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello, World!"

if __name__ == '__main__':
    app.run()

위의 코드를 app.py라는 이름의 파일에 저장한 후, 아래의 명령어를 실행하여 웹 서버를 실행할 수 있습니다.

python app.py

웹 서버가 실행되면, 웹 브라우저에서 http://localhost:5000 주소로 접속하여 ‘Hello, World!’를 확인할 수 있습니다.

정적 파일 사용하기

Flask를 사용하여 정적 파일(예: CSS, JavaScript 파일)을 서비스할 수 있습니다. 정적 파일은 static 디렉토리 아래에 위치시킵니다.

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html')

if __name__ == '__main__':
    app.run()

위의 코드에서 render_template 함수를 사용하여 templates/index.html을 렌더링합니다. 이때, templates 디렉토리는 Flask에 의해 자동으로 인식됩니다.

데이터베이스 연동하기

Flask는 다양한 데이터베이스와의 연동을 지원합니다. 가장 일반적으로 사용되는 데이터베이스 중 하나인 SQLite와의 연동 예시를 살펴보겠습니다.

import sqlite3
from flask import Flask, render_template, g

DATABASE = 'mydb.db'
app = Flask(__name__)

def get_db():
    db = getattr(g, '_database', None)
    if db is None:
        db = g._database = sqlite3.connect(DATABASE)
    return db

@app.teardown_appcontext
def close_db(exception):
    db = getattr(g, '_database', None)
    if db is not None:
        db.close()

@app.route('/')
def home():
    cursor = get_db().cursor()
    cursor.execute('SELECT * FROM users')
    users = cursor.fetchall()
    return render_template('index.html', users=users)

if __name__ == '__main__':
    app.run()

위의 코드에서는 sqlite3 모듈을 사용하여 SQLite 데이터베이스에 연결하고, get_db 함수를 통해 데이터베이스 커넥션을 가져옵니다. 이후 teardown_appcontext 데코레이터를 사용하여 애플리케이션이 종료될 때 데이터베이스 연결을 닫습니다. 마지막으로, 데이터베이스에서 users 테이블을 조회한 결과를 템플릿으로 전달하여 화면에 표시합니다.

결론

이렇게 Flask를 사용하여 파이썬으로 웹 서버를 구축할 수 있습니다. Flask는 간단하고 가볍지만 매우 유용한 툴입니다. 관심 있는 분들은 공식 문서를 참고하여 더 많은 기능과 사용 방법을 살펴보시기 바랍니다.

참고 문서: