[python] SQLAlchemy에서 데이터베이스 테이블 수정하기

SQLAlchemy는 Python에서 사용되는 강력한 ORM(Object-Relational Mapping) 라이브러리입니다. 이를 사용하여 데이터베이스와 상호 작용하는 것은 매우 편리합니다. 이번 블로그 포스트에서는 SQLAlchemy를 사용하여 데이터베이스 테이블을 수정하는 방법에 대해 알아보겠습니다.

1. 데이터베이스 연결 설정

먼저, SQLAlchemy를 사용하기 위해 데이터베이스에 연결해야 합니다. 아래의 코드는 SQLite 데이터베이스에 연결하는 예제입니다.

from sqlalchemy import create_engine

# 데이터베이스에 연결
engine = create_engine('sqlite:///mydatabase.db', echo=True)

위 코드에서 create_engine 함수를 사용하여 데이터베이스에 연결합니다. 이때 echo=True 옵션을 주면 연결에 대한 로그를 출력할 수 있습니다.

2. 테이블 정의

데이터베이스 테이블을 수정하기 위해서는 먼저 테이블을 정의해야 합니다. 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)
    age = Column(Integer)

위 코드에서 Base 클래스는 모든 테이블 클래스의 부모 클래스입니다. 이를 상속하여 테이블 클래스를 정의하고, __tablename__ 속성으로 테이블의 이름을 지정합니다. 그리고 각 속성은 Column 클래스를 사용하여 정의합니다.

3. 테이블 수정하기

이제 테이블을 수정할 준비가 되었습니다. SQLAlchemy에서 테이블 수정은 다음과 같은 과정을 거칩니다.

3.1. 테이블 업데이트 세션 시작

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)
session = Session()

위 코드에서 sessionmaker를 사용하여 세션을 생성하고, bind 옵션에 연결된 엔진을 지정합니다. 이후 session 객체를 이용하여 테이블 수정 작업을 진행합니다.

3.2. 테이블 구조 수정

테이블 구조를 수정하기 위해서는 SQLAlchemy의 alter 함수를 사용합니다.

from sqlalchemy.schema import MetaData

metadata = MetaData(bind=engine)
users_table = Table('users', metadata, autoload=True)

# 테이블에 컬럼 추가
new_column = Column('email', String)
new_column.create(users_table)

# 테이블 컬럼 수정
modified_column = Column('name', String(50))
modified_column.alter(users_table, name='new_name')

# 테이블 컬럼 삭제
deleted_column = users_table.c.age
deleted_column.drop()

위 코드에서는 MetaData 클래스를 사용하여 기존 테이블을 가져옵니다. 그리고 create, alter, drop 함수를 사용하여 테이블에 대한 수정 작업을 수행합니다.

3.3. 테이블 업데이트 세션 종료

session.commit()
session.close()

테이블 수정 작업이 완료되면 변경 사항을 커밋하고 세션을 종료합니다.

마무리

이번 포스트에서는 SQLAlchemy를 사용하여 데이터베이스 테이블을 수정하는 방법에 대해 알아보았습니다. SQLAlchemy의 강력한 기능을 활용하여 데이터베이스 작업을 보다 쉽게 수행할 수 있습니다. 코드 예제를 참고하여 실제 작업에 적용해 보시기 바랍니다.

참고 자료