[파이썬] Pyramid에서의 SQLAlchemy 연동

소개

Pyramid은 Python 웹 프레임워크로, SQLAlchemy와 함께 사용하면 데이터베이스에 대한 작업을 편리하게 처리할 수 있습니다. SQLAlchemy는 Python에서 가장 인기 있는 ORM(Object-Relational Mapping) 라이브러리로, 데이터베이스에 대한 쿼리와 연동하는 작업을 추상화하여 편리하게 다룰 수 있게 해줍니다. 이 블로그 포스트에서는 Pyramid에서의 SQLAlchemy 연동 방법을 알아보겠습니다.

SQLAlchemy 설치

Pyramid 프로젝트에 SQLAlchemy를 사용하기 위해서는 먼저 SQLAlchemy를 설치해야 합니다. 터미널에서 다음 명령을 실행하여 SQLAlchemy를 설치합니다.

pip install sqlalchemy

Pyramid 프로젝트 설정

1. 프로젝트 환경 설정 파일 수정

Pyramid 프로젝트의 development.ini 파일을 열고 아래 설정을 추가합니다.

[app:main]
sqlalchemy.url = <database-url>

위의 <database-url> 부분은 실제 사용하는 데이터베이스에 따라서 설정해야 합니다. 예를 들어, SQLite 데이터베이스를 사용하려면 sqlite:///mydatabase.db와 같이 설정합니다.

2. 애플리케이션 설정 파일(modules.py) 수정

Pyramid 프로젝트의 애플리케이션 설정 파일인 modules.py를 열고 아래 코드를 추가합니다.

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

def get_engine(settings):
    engine = create_engine(settings['sqlalchemy.url'])
    return engine

def get_db(request):
    engine = request.registry['engine']
    session = engine.make_transient_session()
    session.remove()
    db = session()
    return db

def includeme(config):
    settings = config.get_settings()
    engine = get_engine(settings)
    config.registry['engine'] = engine
    config.add_request_method(get_db, 'db', reify=True)

위의 코드는 SQLAlchemy 연결 엔진을 생성하고, Pyramid 요청 객체에 데이터베이스 세션을 쉽게 접근할 수 있는 get_db 함수를 추가합니다.

SQLAlchemy 사용하기

위에서 설정한 환경을 바탕으로 SQLAlchemy를 사용하여 데이터베이스 작업을 진행할 수 있습니다.

데이터베이스 모델 정의

먼저, 데이터베이스 모델을 정의합니다. 예를 들어, User 모델을 다음과 같이 정의할 수 있습니다.

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)
    email = Column(String, unique=True)

데이터베이스 작업 수행

이제, Pyramid 뷰에서 데이터베이스 작업을 수행할 수 있습니다. 예를 들어, 모든 사용자를 가져오는 뷰를 다음과 같이 작성할 수 있습니다.

from pyramid.view import view_config
from .models import User

@view_config(route_name='users', renderer='json')
def get_users(request):
    db = request.db
    users = db.query(User).all()
    return {'users': [user.name for user in users]}

위의 코드에서는 request.db를 통해 데이터베이스 세션에 접근하고, SQLAlchemy의 쿼리 메소드인 query를 사용하여 사용자를 가져옵니다. 그리고 가져온 사용자의 이름을 JSON 형식으로 반환합니다.

마무리

이제 Pyramid에서 SQLAlchemy를 손쉽게 연동하여 데이터베이스 작업을 수행할 수 있는 방법을 알게 되었습니다. SQLAlchemy의 강력한 기능을 활용하여 효율적이고 안전한 웹 애플리케이션을 개발해보세요!