[python] SQLAlchemy와 Tornado 웹 프레임워크 연동 방법

SQLAlchemy는 파이썬에서 사용할 수 있는 강력한 ORM(Object-Relational Mapping) 라이브러리이며, Tornado는 파이썬으로 개발된 웹 프레임워크입니다. 이번 포스트에서는 SQLAlchemy와 Tornado를 연동하여 데이터베이스와 웹 애플리케이션을 효과적으로 개발하는 방법에 대해 알아보겠습니다.

1. 필수 라이브러리 설치

먼저, SQLAlchemy와 Tornado를 사용하기 위해 다음 명령을 사용하여 필수 라이브러리를 설치해야 합니다.

pip install sqlalchemy tornado

2. 데이터베이스 설정

SQLAlchemy를 사용하여 Tornado와 연동하기 위해, 먼저 데이터베이스 설정을 해야 합니다. 다음은 SQLAlchemy를 사용하여 SQLite 데이터베이스를 설정하는 예시입니다.

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# SQLite 데이터베이스 연결 설정
db_engine = create_engine('sqlite:///mydatabase.db')
DBSession = sessionmaker(bind=db_engine)

# 데이터베이스 세션 생성
session = DBSession()

위 예시에서는 SQLite 데이터베이스를 사용하도록 설정하였습니다. 필요에 따라 다른 데이터베이스를 사용할 수 있습니다.

3. 모델 정의

SQLAlchemy를 사용하여 데이터베이스 모델을 정의해야 합니다. 다음은 사용자 정보를 저장하는 모델의 예시입니다.

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

# 모델 기반 클래스 생성
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    email = Column(String(50))

    def __repr__(self):
        return f"<User(id={self.id}, name={self.name}, email={self.email})>"

위 코드에서는 User라는 테이블을 생성하고, 해당 테이블의 각 컬럼을 정의하였습니다. Base 클래스는 모든 모델 클래스의 상위 클래스로 사용되며, 테이블 생성에 필요한 기능을 제공합니다.

4. Tornado 애플리케이션 개발

이제 SQLAlchemy와 연동된 Tornado 애플리케이션을 개발할 수 있습니다. 다음은 Tornado 웹 서버에서 SQLAlchemy를 사용하여 데이터베이스에 접근하는 예시입니다.

import tornado.ioloop
import tornado.web
from tornado_sqlalchemy import SQLAlchemy

# SQLAlchemy 초기화
db = SQLAlchemy()

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        users = db.session.query(User).all()

        self.write("User List:<br>")
        for user in users:
            self.write(f"ID: {user.id}, Name: {user.name}, Email: {user.email}<br>")        

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

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

위 예시 코드에서는 SQLAlchemy의 db.session 객체를 사용하여 사용자 정보를 조회하여 출력하는 간단한 Tornado 핸들러를 구현하였습니다. make_app 함수에서는 Tornado 애플리케이션을 생성하고, app.listen(8888)으로 8888 포트에서 서버를 실행합니다.

마무리

이번 포스트에서는 SQLAlchemy와 Tornado 웹 프레임워크를 연동하는 방법에 대해 알아보았습니다. SQLAlchemy를 통해 데이터베이스에 접근하고, Tornado를 사용하여 웹 애플리케이션을 개발할 수 있습니다.

더 많은 SQLAlchemy와 Tornado의 기능과 사용법을 알고 싶다면, SQLAlchemy 문서Tornado 문서를 참고하세요.