[python] PyMySQL을 이용하여 데이터베이스의 스키마를 변경하는 방법을 알아본다.

이번에는 Python에서 PyMySQL을 사용하여 데이터베이스의 스키마를 변경하는 방법에 대해 알아보겠습니다.

1. PyMySQL 설치하기

먼저, PyMySQL을 설치해야 합니다. 아래의 명령어를 사용하여 PyMySQL을 설치합니다.

pip install PyMySQL

2. 데이터베이스 연결

스키마를 변경하기 위해서는 먼저 데이터베이스에 연결해야 합니다. 아래의 코드를 사용하여 데이터베이스에 연결합니다.

import pymysql

# 데이터베이스 연결
conn = pymysql.connect(
    host='localhost',
    user='username',
    password='password',
    db='database_name'
)

위 코드에서 host, user, password, db에는 각각 데이터베이스 서버의 주소, 사용자 이름, 비밀번호, 데이터베이스 이름을 입력해야 합니다.

3. 스키마 변경 쿼리 실행

연결된 데이터베이스에 스키마 변경 쿼리를 실행하여 스키마를 변경할 수 있습니다. 아래의 예제 코드는 user 테이블에 새로운 열을 추가하는 방법을 보여줍니다.

# 커서 생성
cur = conn.cursor()

# 스키마 변경 쿼리 실행
alter_query = "ALTER TABLE user ADD COLUMN age INT"
cur.execute(alter_query)

# 변경 사항 저장
conn.commit()

# 커서와 연결 해제
cur.close()
conn.close()

위 코드에서 ALTER TABLE 절을 사용하여 user 테이블에 age라는 새로운 열을 추가하는 스키마 변경 쿼리를 실행합니다.

4. 예외 처리

스키마 변경 작업 중에는 예외가 발생할 수 있으므로, 적절한 예외 처리를 해주어야 합니다. 예를 들어, 이미 존재하는 열을 추가하려고 할 경우에는 pymysql.err.InternalError 예외가 발생합니다. 아래의 코드는 이러한 예외를 처리하는 방법을 보여줍니다.

import pymysql
from pymysql import err

try:
    # 데이터베이스 연결
    conn = pymysql.connect(host='localhost', user='username', password='password', db='database_name')

    # 커서 생성
    cur = conn.cursor()

    # 스키마 변경 쿼리 실행
    try:
        alter_query = "ALTER TABLE user ADD COLUMN age INT"
        cur.execute(alter_query)
        conn.commit()
    except pymysql.err.InternalError as e:
        print(e)

    # 커서와 연결 해제
    cur.close()
    conn.close()
except err.OperationalError as e:
    print(e)

5. 참고 문서