[python] Tornado를 이용한 직원 출근/퇴근 체크인 시스템 구현

이 블로그 포스트에서는 Tornado 웹 프레임워크를 사용하여 직원 출근/퇴근 체크인 시스템을 구현하는 방법에 대해 설명하겠습니다.

준비하기

기본적으로 Tornado를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다:

pip install tornado

또한, MySQL 데이터베이스를 사용하므로 mysql-connector-python도 설치해야 합니다:

pip install mysql-connector-python

데이터베이스 구성

직원 정보를 저장하기 위해 MySQL 데이터베이스를 사용합니다. employees 테이블을 생성하고 다음과 같은 구조로 정의합니다:

CREATE TABLE employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    timestamp DATETIME NOT NULL
);

Tornado 애플리케이션 만들기

다음은 Tornado 애플리케이션을 만드는 예시 코드입니다. handler.py 파일을 생성하고 다음 코드를 작성합니다:

import tornado.ioloop
import tornado.web
import mysql.connector
from datetime import datetime

class CheckinHandler(tornado.web.RequestHandler):
    def initialize(self):
        self.db = mysql.connector.connect(
            host="localhost",
            user="username",
            password="password",
            database="database_name"
        )

    def get(self):
        self.render("checkin.html")

    def post(self):
        name = self.get_argument("name")

        # 현재 시간으로 timestamp 생성
        timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

        cursor = self.db.cursor()
        cursor.execute("INSERT INTO employees (name, timestamp) VALUES (%s, %s)",
                       (name, timestamp))
        self.db.commit()
        cursor.close()

        self.write("출근 체크인이 완료되었습니다.")

def make_app():
    return tornado.web.Application([
        (r"/checkin", CheckinHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

위의 코드에서 CheckinHandler 클래스는 /checkin 경로로 들어오는 GET 및 POST 요청을 처리합니다. GET 요청은 checkin.html 템플릿을 렌더링하고, POST 요청은 name 파라미터를 받아와 데이터베이스에 직원 정보를 저장합니다.

체크인 HTML 템플릿 만들기

체크인 페이지에 해당하는 HTML 템플릿을 생성하고 checkin.html 파일에 저장합니다:

<!DOCTYPE html>
<html>
<head>
    <title>직원 출근 체크인</title>
</head>
<body>
    <h1>직원 출근 체크인</h1>

    <form action="/checkin" method="POST">
        <label for="name">이름:</label>
        <input type="text" id="name" name="name" required>
        <br>
        <input type="submit" value="출근 체크인">
    </form>
</body>
</html>

위의 HTML 코드는 간단한 POST 폼을 포함하고 있습니다. 직원의 이름을 입력하고 제출하면 /checkin 경로로 POST 요청이 전송됩니다.

애플리케이션 실행

터미널에서 다음 명령을 실행하여 애플리케이션을 실행합니다:

python handler.py

이제 웹 브라우저에서 http://localhost:8888/checkin으로 이동하여 직원 출근 체크인을 할 수 있습니다.

마치며

이번 포스트에서는 Tornado를 사용하여 직원 출근/퇴근 체크인 시스템을 구현하는 방법을 소개했습니다. Tornado의 간결한 코드와 비동기 처리 기능은 웹 애플리케이션 개발에 매우 유용합니다. Tornado를 사용하여 더욱 복잡하고 실시간 기능이 필요한 웹 애플리케이션을 구축할 수도 있습니다.

참고: Tornado 공식 문서