Búsqueda de sitios web

¿Cómo crear una copia de seguridad de una base de datos SQLite usando Python?


SQLite es un popular sistema de gestión de bases de datos, ligero y sin servidor, que se utiliza en muchas aplicaciones. Es conocido por su facilidad de uso, tamaño reducido y portabilidad. Sin embargo, al igual que cualquier otra base de datos, es importante tener una copia de seguridad de su base de datos SQLite para protegerla contra la pérdida de datos.

Python es un potente lenguaje de programación que se utiliza ampliamente para diversas tareas, incluido el procesamiento y la gestión de datos. En este tutorial, exploraremos cómo crear una copia de seguridad de una base de datos SQLite usando Python. Revisaremos el proceso de conexión a una base de datos SQLite, crearemos un archivo de respaldo y verificaremos que el respaldo se haya realizado correctamente.

Este tutorial asume que tienes conocimientos básicos de Python y SQLite.

El primer paso para nosotros es asegurarnos de que SQLite3 esté instalado en nuestra máquina y, para comprobarlo, podemos ejecutar el comando que se muestra a continuación.

sqlite3 

Si obtiene un sistema similar al que se muestra a continuación, puede continuar con los ejemplos que se muestran a continuación.

SQLite version 3.39.5 2022-10-14 20:58:05
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> 

Ahora tomemos algunos ejemplos para mostrar cómo se pueden crear copias de seguridad de una base de datos SQLite.

Ejemplo 1: creación de una base de datos simple en SQLite

En el primer ejemplo, entenderemos cómo podemos crear una base de datos simple en SQLite en Python. Considere el código que se muestra a continuación.

Este código define una función llamada connect_to_database que establece una conexión a una base de datos SQLite llamada mydatabase.db.

  • Si la conexión se establece correctamente, la función imprime un mensaje para confirmarlo y también imprime un mensaje para confirmar que se ha creado el archivo de base de datos.

  • Si ocurre un error, la función imprime el mensaje de error.

La función se llama al final del código para establecer una conexión con la base de datos y luego se cierra la conexión.

# Import the required modules
import sqlite3
from sqlite3 import Error

# Define a function to establish a connection to the database
def connect_to_database():
   try:

      # Connect to the SQLite database
      conn = sqlite3.connect('mydatabase.db')
      
      # Print a message to confirm that the connection was established successfully
      print("Connection established successfully!")
      
      # Print a message to confirm that the database file has been created
      print("'mydatabase.db' created")
      
      # Return the connection object
      return conn
   except Error as e:
   
      # If an error occurs, print the error message
      print(e)

# Call the function to establish a connection to the database
conn = connect_to_database()

# Close the connection to the database
conn.close()

Producción

Una vez que ejecute este código, creará un nuevo archivo llamado mydatabase.db en la misma carpeta.

Connection established successfully!
'mydatabase.db' created

Como referencia, ahora mi directorio actual se parece a esto:

.
├── main.py
└── mydatabase.db
0 directories, 2 files 

Ejemplo 2: creación de una tabla dentro de la base de datos SQLite

Ahora, como siguiente paso, digamos que queremos crear una tabla dentro de nuestra base de datos. Considere el código que se muestra a continuación.

El código crea una conexión a una base de datos SQLite llamada "mydatabase.db" y crea una tabla llamada "estudiantes" con seis columnas en la base de datos.

# Import the required modules
import sqlite3
from sqlite3 import Error

# Define a function to establish a connection to the database
def connect_to_database():
   try:
   
      # Connect to the SQLite database named mydatabase.db
      conn = sqlite3.connect('mydatabase.db')
      
      # Return the connection object
      return conn
   except Error as e:

      # If an error occurs, print the error message
      print(e)
      
# Define a function to create a table in the database
def create_table(conn):
   
   # Create a cursor object to execute SQL queries
   cursor = conn.cursor()
   
   # Define the SQL query to create a table named 'students'
   sql_query = '''CREATE TABLE students (
      roll_no INTEGER PRIMARY KEY,
      first_name TEXT,
      last_name TEXT,
      class TEXT,
      stream TEXT,
      address TEXT
   );'''
   
   # Execute the SQL query to create the table
   cursor.execute(sql_query)
   
   # Commit the changes to the database
   conn.commit()
   
   # Print a message to confirm that the table has been created
   print("Table 'students' created successfully") 
   
# Call the function to establish a connection to the database
conn = connect_to_database()

# Call the function to create a table in the database
create_table(conn)

# Close the connection to the database
conn.close() 

Producción

Al ejecutar, obtendrá el siguiente resultado:

Table 'students' created successfully 

Ejemplo 3: creación de una copia de seguridad de la base de datos

Ahora centrémonos en el código donde crearemos una copia de seguridad de la base de datos actual. Considere el código que se muestra a continuación.

import sqlite3
import io
conn = sqlite3.connect('mydatabase.db')

# Open() function
with io.open('mydatabase_dump.sql', 'w') as p:

   # iterdump() function
   for line in conn.iterdump():
      p.write('%s\n' % line)
print(' Backup performed successfully!')
print(' Data Saved as backupdatabase_dump.sql')
conn.close() 

Producción

Al ejecutar, obtendrá el siguiente resultado:

Backup performed successfully!
Data Saved as backupdatabase_dump.sql

Además, se creará una nueva base de datos de respaldo SQL. Ahora la estructura del directorio se verá así:

.
├── main.py
├── mydatabase.db
└── mydatabase_dump.sql
0 directories, 3 files 

Conclusión

Puede crear una copia de seguridad de una base de datos SQLite usando Python abriendo una conexión a la base de datos, iterando a través de los datos usando la función iterdump() y escribiendo los datos en un archivo de respaldo usando la función open(). Este proceso garantiza que se guarde una copia de la base de datos en caso de pérdida o corrupción de datos.

Artículos relacionados: