[python] 웹 서버에 통계 기능 추가하기

이번 포스트에서는 Python을 사용하여 간단한 웹 서버에 통계 기능을 추가하는 방법에 대해 알아보겠습니다. 웹 서버에 통계를 추가하면 사용자들의 방문 수, 페이지 뷰 수 등 유용한 정보를 수집하고 분석할 수 있습니다.

필요한 라이브러리 설치하기

통계 기능을 추가하기 위해서는 Flask 라이브러리와 SQLAlchemy 라이브러리를 설치해야 합니다. 다음과 같이 명령어를 실행하여 두 라이브러리를 설치해주세요.

pip install Flask SQLAlchemy

데이터베이스 설정

통계 정보를 저장하기 위해 데이터베이스를 설정해야 합니다. SQLite를 사용하여 간단한 데이터베이스를 구축해보겠습니다. 다음과 같이 코드를 작성하여 database.py 파일에 저장해주세요.

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///stats.db'
db = SQLAlchemy(app)

class Stat(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    page_name = db.Column(db.String(50), nullable=False)
    count = db.Column(db.Integer, default=0)

@app.route('/update_count/<page_name>', methods=['GET'])
def update_count(page_name):
    stat = Stat.query.filter_by(page_name=page_name).first()
    if stat:
        stat.count += 1
    else:
        stat = Stat(page_name=page_name, count=1)
        db.session.add(stat)
    db.session.commit()
    return 'Count updated successfully'

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

위 코드는 Flask 애플리케이션이 실행될 때 데이터베이스를 생성하고, /update_count/<page_name> 경로에 접속할 때마다 해당 페이지의 방문 수를 업데이트합니다.

통계 데이터 확인하기

위의 코드를 실행하면 통계 데이터베이스가 생성됩니다. 이제 통계 데이터를 확인하는 간단한 웹 페이지를 작성해보겠습니다. 다음과 같이 코드를 작성하여 app.py 파일에 저장해주세요.

from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///stats.db'
db = SQLAlchemy(app)

class Stat(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    page_name = db.Column(db.String(50), nullable=False)
    count = db.Column(db.Integer, default=0)

@app.route('/')
def dashboard():
    stats = Stat.query.all()
    return render_template('dashboard.html', stats=stats)

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

위 코드는 Flask 애플리케이션이 실행될 때 통계 데이터베이스에 접근하고, dashboard.html 템플릿을 렌더링하여 통계 데이터를 표시합니다.

대시보드 템플릿 작성하기

마지막으로 대시보드를 표시하기 위한 HTML 템플릿 파일인 dashboard.html을 작성해보겠습니다.


<!DOCTYPE html>
<html>
<head>
    <title>통계 대시보드</title>
</head>
<body>
    <h1>통계 대시보드</h1>
    <table>
        <tr>
            <th>페이지</th>
            <th>방문 수</th>
        </tr>
        {% for stat in stats %}
        <tr>
            <td>{{ stat.page_name }}</td>
            <td>{{ stat.count }}</td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>

위 템플릿은 통계 데이터를 테이블 형태로 보여줍니다. 각 페이지의 방문 수가 표시됩니다.

웹 서버 실행하기

이제 모든 준비가 끝났으니 웹 서버를 실행해보세요. app.py 파일을 실행하고 웹 브라우저에서 http://localhost:5000에 접속하면 통계 대시보드를 확인할 수 있습니다.

이렇게하면 Python 웹 서버에 통계 기능을 추가하는 간단한 예제를 살펴보았습니다. 통계 기능을 더욱 확장하고 개선하고 싶다면 Flask와 SQLAlchemy의 다양한 기능을 참고해보세요.