소개
Tornado와 SQLAlchemy는 웹 개발에서 널리 사용되는 파이썬 라이브러리입니다. Tornado는 비동기 웹 서버 프레임워크이며, SQLAlchemy는 데이터베이스 ORM(Object-Relational Mapping) 라이브러리입니다.
이번 포스트에서는 Tornado와 SQLAlchemy를 함께 사용하여 데이터베이스를 연동하는 방법을 소개하겠습니다.
사전 준비
먼저, Tornado와 SQLAlchemy를 설치해야 합니다. 아래의 명령어를 사용하여 설치할 수 있습니다.
pip install tornado sqlalchemy
또한, 데이터베이스에 접속하기 위해 필요한 정보를 알고 있어야 합니다. 호스트, 포트, 사용자 이름, 비밀번호, 데이터베이스 이름 등의 정보를 알고 있는지 확인해주세요.
SQLAlchemy 모델 정의
SQLAlchemy를 사용하여 데이터베이스 모델을 정의해야 합니다. 예를 들어, ‘User’ 모델을 정의해보겠습니다.
from sqlalchemy import Column, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(String, primary_key=True)
name = Column(String)
email = Column(String)
위의 코드에서 User
클래스는 users
테이블과 연결됩니다. id
, name
, email
은 각각 String
타입의 열(column)입니다. id
는 기본 키(primary key)로 설정되어 있습니다.
Tornado 핸들러
Tornado에서는 핸들러(handler) 클래스를 통해 웹 요청을 처리합니다. 데이터베이스 연동을 위해서는 해당 핸들러에 SQLAlchemy 세션이 필요합니다. 아래는 데이터베이스 연동을 위한 핸들러의 예입니다.
from tornado.web import RequestHandler
from sqlalchemy.orm import sessionmaker
class UserHandler(RequestHandler):
def initialize(self, engine):
Session = sessionmaker(bind=engine)
self.db = Session()
def get(self, user_id):
user = self.db.query(User).filter_by(id=user_id).first()
if user:
self.write(f"User ID: {user.id}, Name: {user.name}, Email: {user.email}")
else:
self.write("User not found")
위의 코드에서 UserHandler
클래스는 RequestHandler
를 상속받습니다. initialize
메소드에서 SQLAlchemy 엔진을 전달받아 세션을 생성합니다. get
메소드에서는 받은 유저 아이디로 데이터베이스에서 해당 유저를 조회합니다.
Tornado 애플리케이션 설정
마지막으로, Tornado 애플리케이션에서 데이터베이스 연동을 설정해야 합니다.
from tornado.ioloop import IOLoop
from tornado.web import Application
from sqlalchemy import create_engine
# SQLAlchemy 엔진 생성
engine = create_engine('sqlite:///database.db')
# Tornado 애플리케이션 설정
app = Application([
(r"/user/(\d+)", UserHandler),
])
# SQLAlchemy 세션 전달
app.settings["db_engine"] = engine
if __name__ == '__main__':
app.listen(8888)
IOLoop.current().start()
위의 코드에서는 sqlite
데이터베이스를 사용하는 예제입니다. create_engine
함수를 사용하여 데이터베이스에 연결하고, 애플리케이션 설정에서 SQLAlchemy 엔진을 전달합니다.
결론
이제 Tornado와 SQLAlchemy를 함께 사용하여 데이터베이스를 연동하는 방법을 알게 되었습니다. Tornado 핸들러에서 SQLAlchemy 세션을 사용하여 데이터베이스에 접근하고, SQLAlchemy 모델을 사용하여 데이터를 조작할 수 있습니다.
더 자세한 내용은 Tornado 공식 문서와 SQLAlchemy 공식 문서를 참고해주세요.