Crear aplicación gráfica con Python, MySQL y Tkinter – Parte 5 – 100 días de Python #30
Ahora, ¿qué te parece si hacemos un método que sirva para guardar copias de seguridad MySQL desde Python?
Puesto que todavía no puedo viajar al futuro y no podré escuchar tu respuesta, independientemente de lo que respondas, voy a crearlo.
Para crear el código necesario para realizar un método, voy a utilizar lo que te enseñé en el capítulo 21.
Primero, crea una carpeta en la carpeta «bd» del proyecto (donde está el archivo «base_datos.py»). Esta nos servirá para poder guardar ahí las copias de seguridad de las bases de datos que use la aplicación.
En el capítulo 14, te mostré como guardar rutas en variables. Vamos a usar esto para añadir la ruta a esta carpeta.
base_datos.py
¡No te olvides de importar el módulo os!
Esto lo voy a colocar antes de la clase:
# --> Rutas #Obtenemos la raíz de la carpeta del proyecto carpeta_principal = os.path.dirname(__file__) carpeta_respaldo = os.path.join(carpeta_principal, "respaldo")
Así ya tenemos en variables la ruta hacia la carpeta de respaldo.
Dentro de la clase, vamos a escribir el método de respaldo.
Si no entiendes esto, debes ir al capítulo 21 donde está todo explicado de arriba a abajo.
#Crear backups de bases de datos def copia_bd(self, nombre_bd): with open(f'{carpeta_respaldo}/{nombre_bd}.sql', 'w') as out: subprocess.Popen(f'"C:/Program Files/MySQL/MySQL Workbench 8.0/"mysqldump --user=root -- password={getpass.getpass()} --databases {nombre_bd}', shell=True, stdout=out)
Lo único que tendremos que utilizar para crear un respaldo de una base de datos, es su nombre. Gracias a este método, evitamos el dolor de tener que escribir todo esto cada vez que queramos hacer un respaldo.
En el «open» creamos el archivo en la ruta de la carpeta de respaldo. Se utiliza el nombre pasado al parámetro «nombre_db» como nombre de archivo. Además, se le añade la extensión .sql.
Con el módulo subprocess, estoy accediendo a mysqldump, el programa responsable del respaldo de la base de datos.
Vamos al archivo app.py y probemos el método:
base_datos.copia_bd("world")
Estupendo, ya tenemos la copia hecha.
Dejamos el capítulo aquí. Te dejo como reto para de aquí dos capítulos, intentes prescindir del módulo «getpass» y hagas que no se tenga que escribir la contraseña en la consola con cada respaldo que queramos hacer.
También, estaría bien, poder guardar versiones de los respaldos con la fecha y hora exactas. Puesto que no hemos visto nada de esto todavía en el curso, el siguiente capítulo estará dedicado al manejo de fechas y horas con Python. Así, podremos ir mejorando nuestra clase y sus métodos a la vez que aprendes cosas nuevas.
No te pierdas nada de todo el contenido que tengo sobre Python.