[python] SQLAlchemy를 사용한 데이터베이스 복사 및 백업

데이터베이스는 소중한 정보를 담고 있는 중요한 자원입니다. 따라서 데이터베이스를 안전하게 복사하고 백업하는 것은 매우 중요합니다. 이를 위해 SQLAlchemy를 사용하여 데이터베이스를 복사하고 백업하는 방법을 알아보겠습니다.

1. SQLAlchemy 설치

먼저 SQLAlchemy를 설치해야 합니다. 아래의 명령어를 사용하여 SQLAlchemy를 설치할 수 있습니다.

pip install SQLAlchemy

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

데이터베이스 연결 설정을 위해 SQLAlchemy의 create_engine 함수를 사용합니다. 예를 들어, MySQL 데이터베이스에 연결하고자 할 때는 다음과 같이 작성할 수 있습니다.

from sqlalchemy import create_engine

user = 'your_username'
password = 'your_password'
host = 'your_host'
port = 'your_port'
database = 'your_database'

# 데이터베이스 연결 설정
engine = create_engine(f'mysql+mysqlconnector://{user}:{password}@{host}:{port}/{database}')

3. 데이터베이스 복사

이제 SQLAlchemy를 사용하여 데이터베이스를 복사해보겠습니다. 데이터베이스를 복사하려면 다음과 같은 과정을 수행해야 합니다.

3.1. 원본 데이터베이스 테이블과 모델 정의

먼저, 원본 데이터베이스의 테이블과 모델을 정의해야 합니다. SQLAlchemy를 사용하여 데이터베이스와 테이블을 조작하는 것은 간단히 할 수 있습니다. 예를 들어, 다음은 users라는 테이블의 모델을 정의하는 예입니다.

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))

3.2. 복사할 데이터베이스 테이블 생성

이제 데이터베이스를 복사할 테이블을 생성해야 합니다. 다음 명령어를 사용하여 데이터베이스 내의 테이블을 생성할 수 있습니다.

# 테이블 생성
Base.metadata.create_all(engine)

3.3. 데이터베이스 데이터 복사

이제 원본 데이터베이스 데이터를 복사하여 새로운 데이터베이스에 넣을 수 있습니다. 다음은 user 테이블의 데이터를 복사하는 예입니다.

from sqlalchemy.orm import sessionmaker

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

# 원본 데이터베이스에서 데이터 가져오기
users = session.query(User).all()

# 새로운 데이터베이스에 데이터 삽입
for user in users:
    new_user = User(name=user.name, email=user.email)
    session.add(new_user)

# 변경 내용 커밋
session.commit()

4. 데이터베이스 백업

데이터베이스 백업은 데이터베이스의 현재 상태를 파일로 저장하는 것을 의미합니다. SQLAlchemy를 사용하여 데이터베이스를 백업하는 방법은 다음과 같습니다.

4.1. 백업 파일 경로 지정

먼저 백업 파일을 저장할 경로를 지정합니다.

import datetime

# 백업 파일 경로
backup_path = f'backup_{datetime.datetime.now().strftime("%Y%m%d%H%M%S")}.sql'

4.2. 데이터베이스 백업 실행

SQLAlchemy를 사용하여 데이터베이스를 백업하는 방법은 다음과 같습니다.

from sqlalchemy import text
from sqlalchemy.orm import sessionmaker

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

# 백업 쿼리 실행
backup_query = text(f"BACKUP DATABASE {database} TO DISK='{backup_path}'")
session.execute(backup_query)
session.commit()

요약

이번 글에서는 SQLAlchemy를 사용하여 데이터베이스를 복사하고 백업하는 방법을 알아보았습니다. SQLAlchemy는 다양한 데이터베이스를 지원하므로 복사 및 백업 작업을 간단하게 수행할 수 있습니다. 데이터베이스를 안전하게 백업하고 복사하려면 이러한 도구들을 활용해보세요.

참고 자료: