En este artículo, vamos a aprender cómo hacer una copia de seguridad de una base de datos MySQL usando python.
Base de datos utilizada:
Módulos de Python requeridos:
En esta publicación, vamos a utilizar el módulo mysql-connector de python para hacer una copia de seguridad de nuestros datos. Puede instalar mysql-connector con el siguiente comando:
pip install mysql-connector
Copia de seguridad de la base de datos:
Entonces, es una tarea bastante simple hacer una copia de seguridad de nuestra base de datos.
Lo que haremos será, en primer lugar, crear una conexión a la base de datos (de la que queremos hacer una copia de seguridad) utilizando el módulo mysql-connector. Luego crearemos una instancia del objeto cursor obtenido a través de esa conexión. Luego, primero buscaremos todos los nombres de las tablas usando el comando «MOSTRAR TABLAS» de SQL y ejecutaremos el método del objeto del cursor.
Ejemplo:
Python3
import mysql.connector as m # database which you want to backup db = 'geeksforgeeks' connection = m.connect(host='localhost', user='root', password='123', database=db) cursor = connection.cursor() # Getting all the table names cursor.execute('SHOW TABLES;') table_names = [] for record in cursor.fetchall(): table_names.append(record[0])
Nota: El método cursor.fetchall() devuelve una lista de tuplas con nombres de tablas como elementos. Y estamos ejecutando un bucle for en eso y almacenando el primer elemento de esa tupla (que es el nombre de nuestra tabla) en nuestra lista para obtener una lista simple que consta de todos los nombres de la tabla.
Luego crearemos nuestra base de datos de respaldo usando el comando «CREAR» de SQL y el objeto del cursor. Haremos esto en un bloque de prueba para que si la base de datos creada ya existe, no devuelva ningún error. El código para lo anterior se ve así:
Python3
backup_dbname = db + '_backup' try: cursor.execute(f'CREATE DATABASE {backup_dbname}') except: pass
Esto creará nuestra base de datos de respaldo. Ahora simplemente ejecutaremos el comando «USE» con el objeto del cursor para usar la base de datos backup_dbname en lugar de nuestra base de datos actual.
Python3
cursor.execute(f'USE {backup_dbname}')
Esto cambiará nuestra base de datos actual a backup_dbname. Entonces, en SQL, cuando ejecutamos el siguiente comando, podemos crear una copia de la tabla 1 en una tabla 2 recién creada.
CREATE TABLE table2 SELECT * FROM table1;
Entonces, lo que haremos en nuestro código python es que ejecutaremos un bucle for en todos los nombres de nuestras tablas y ejecutaremos un comando «CREATE» para ese nombre de tabla (y nos aseguraremos de que ahora estamos usando backup_dbname como nuestra base de datos actual y no tiene ninguna tabla a partir de ahora) y crearemos una consulta, similar a la anterior y copiaremos la tabla en la tabla recién creada.
El código para eso es:
Python3
for table_name in table_names: cursor.execute( f'CREATE TABLE {table_name} SELECT * FROM {db}.{table_name}')
Tenga en cuenta que estamos haciendo referencia a la tabla original a través de {db}.{table_name} tal como existe en otra base de datos, ya que nuestra base de datos actual es backup_dbname.
Entonces, la imagen completa de nuestro código se ve así:
Python3
import mysql.connector as m # database which you want to backup db = 'geeksforgeeks' connection = m.connect(host='localhost', user='root', password='123', database=db) cursor = connection.cursor() # Getting all the table names cursor.execute('SHOW TABLES;') table_names = [] for record in cursor.fetchall(): table_names.append(record[0]) backup_dbname = db + '_backup' try: cursor.execute(f'CREATE DATABASE {backup_dbname}') except: pass cursor.execute(f'USE {backup_dbname}') for table_name in table_names: cursor.execute( f'CREATE TABLE {table_name} SELECT * FROM {db}.{table_name}')
Y al ejecutar este código creamos nuestra base de datos de respaldo con todas las tablas y datos en ellas. La base de datos geeksforgeeks_backup (que creamos en el proceso) se ve así:
Publicación traducida automáticamente
Artículo escrito por mycodenotein y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA