[python] Flask를 이용한 데이터베이스 백업과 복원 방법
데이터베이스는 웹 응용 프로그램에서 중요한 부분을 차지하며, 데이터 손실은 심각한 문제가 될 수 있습니다. 따라서 데이터베이스의 안전성을 유지하기 위해 정기적인 백업과 복원을 수행해야 합니다. 이 글에서는 Flask 웹 애플리케이션의 데이터베이스를 백업하고 복원하는 방법을 살펴보겠습니다.
1. 데이터베이스 백업
데이터베이스를 백업하는 가장 간단한 방법은 SQL 파일로 내보내는 것입니다. Flask 애플리케이션에서는 flask
패키지의 current_app
과 sqlalchemy
를 사용하여 이 작업을 수행할 수 있습니다. 다음은 데이터베이스를 백업하는 예제 코드입니다.
from flask import current_app
from sqlalchemy import create_engine
from sqlalchemy.engine import reflection
def backup_database():
engine = create_engine(current_app.config['SQLALCHEMY_DATABASE_URI'])
insp = reflection.Inspector.from_engine(engine)
table_names = insp.get_table_names()
with engine.connect() as conn:
with open('backup.sql', 'w') as file:
for table in table_names:
for row in conn.execute(f'SELECT * FROM {table}'):
file.write(str(row) + '\n')
위 코드는 현재 Flask 애플리케이션의 데이터베이스를 backup.sql
파일로 백업합니다.
2. 데이터베이스 복원
데이터베이스를 복원하는 것은 백업된 SQL 파일을 사용하여 데이터베이스에 다시 가져오는 것을 말합니다. Flask 애플리케이션에서는 sqlalchemy
의 create_engine
을 사용하여 데이터베이스를 새로 고칠 수 있습니다. 아래는 데이터베이스를 복원하는 예제 코드입니다.
from flask import current_app
from sqlalchemy import create_engine
def restore_database():
engine = create_engine(current_app.config['SQLALCHEMY_DATABASE_URI'])
with engine.connect() as conn:
with open('backup.sql', 'r') as file:
for line in file:
conn.execute(line)
위 코드는 backup.sql
파일에서 데이터를 읽어 원본 데이터베이스에 복원합니다.
결론
위에서 제시된 예제 코드를 사용하여 Flask 애플리케이션에서 데이터베이스를 백업하고 복원할 수 있습니다. 이를 통해 데이터 손실을 최소화하고 데이터베이스의 안전성을 유지할 수 있습니다. 주기적인 데이터베이스 백업과 복원은 웹 응용 프로그램의 안정성을 보호하는 데 중요한 요소입니다.
참고문헌:
- Flask 공식 문서: https://flask.palletsprojects.com/
- SQLALchemy 공식 문서: https://docs.sqlalchemy.org/