[파이썬] SQLite 데이터베이스 백업 스케줄링

SQLite

SQLite is a popular embedded database management system that is widely used for small to medium-sized applications. One important aspect of working with SQLite databases is ensuring regular backups to prevent data loss. In this blog post, we will explore how to implement a backup scheduling system for your SQLite databases using Python.

Prerequisites

To follow along with this tutorial, you need to have the following:

Step 1: Creating a Backup Function

First, we need to write a Python function that will handle the backup process of our SQLite database. This function will create a backup file by making a copy of the original database file.

import shutil
import os

def backup_database(database_file, backup_path):
    # Verify if the original database file exists
    if not os.path.isfile(database_file):
        raise FileNotFoundError("Database file does not exist.")

    # Create a backup file name based on current timestamp
    backup_file = os.path.join(backup_path, f"{os.path.splitext(database_file)[0]}_{time.strftime('%Y%m%d%H%M%S')}.bak")

    # Copy the database file to the backup location
    shutil.copy2(database_file, backup_file)

    print(f"Backup created at: {backup_file}")

This function uses the shutil module to copy the original database file to a specified backup directory. It also appends the current timestamp to the backup file name to ensure uniqueness.

Step 2: Implementing Backup Scheduling

Now that we have a function to create backups, we can schedule the backup process to run at specific intervals using Python’s schedule module. This module provides a simple and intuitive way to schedule tasks.

Install the schedule module using pip:

pip install schedule

Next, let’s take a look at an example implementation:

import schedule
import time

# Define the backup interval in minutes
backup_interval = 60

def schedule_backup():
    # Provide the database file path and the backup directory path
    database_file = 'path/to/database.db'
    backup_dir = 'path/to/backup/directory'

    # Schedule the backup function to run at the specified interval
    schedule.every(backup_interval).minutes.do(backup_database, database_file, backup_dir)

    # Run the scheduler indefinitely
    while True:
        schedule.run_pending()
        time.sleep(1)

# Start the backup scheduler
schedule_backup()

In this example, we define the backup interval in minutes and provide the paths to the database file and backup directory. The schedule_backup() function is responsible for scheduling the backup task to run at the specified interval. The schedule.run_pending() method is used to check if there are any pending tasks and execute them. Finally, the time.sleep() function is used to delay the execution of the scheduler by 1 second.

Conclusion

In this blog post, we learned how to implement a backup scheduling system for SQLite databases using Python. By creating a backup function and using the schedule module, you can automate the backup process and ensure the safety of your data.

Regular backups are crucial for any application that relies on SQLite databases, as they protect against data loss caused by unexpected events. By integrating the backup system into your Python application, you can focus on developing new features with the peace of mind that your data is secure.

Happy coding!