¿Cómo crear aplicaciones con Python – MySQL y Tkinter?

¿Cómo crear aplicaciones con Python – MySQL y Tkinter?

https://youtu.be/lsF8RLL7WzA

¿Cómo crear aplicaciones con Python - MySQL y Tkinter? - Parte 3 - Máster en Python #28

Método para crear bases de datos MySQL desde Python

Continuamos donde lo dejamos en el capítulo anterior. Voy a añadir otro método más a la clase. Se trata de un método capaz de crear bases de datos desde Python.

    #método para crear bases de datos
    def crear_bd(self, nombre_bd):
        try:
            self.cursor.execute(f"CREATE DATABASE IF NOT EXISTS {nombre_bd}")
            print(f"Se creó la base de datos {nombre_bd} o ya estaba creada.")
        except:
            print(f"Ocurrió un error al intentar crear la base de datos {nombre_bd}.")
            print("Estas son las bases de datos que tiene el servidor:")
            self.mostrar_bd()

Lo que espera este método, es un nombre de la base de datos que tiene que crear. Con el formateo de strings, otra vez, le doy la instrucción SQL necesaria para crear una base de datos.

Esta instrucción SQL dice, crea (CREATE) una base de datos (DATABASE) si no existe (IF NOT EXISTS).

CREATE DATABASE IF NOT EXISTS nombre_bd

El "IF NOT EXISTS" es importante, ya que evitará que MySQL arroje un error de los suyos si la base de datos ya existe. Con esto, ignorará su creación.

En el caso de que la base de datos exista u ocurra un error de otro tipo, pasamos al bloque except, el cual indica que ocurrió un error al intentar crear la base de datos.

base_datos.crear_bd("base_datos_cualquiera")

Se creó la base de datos base_datos_cualquiera o ya estaba creada.

Puede ser que te preguntes, si se ignoran los errores con el "IF NOT EXISTS" de MySQL, ¿en qué momento se podría producir un error que desencadenara la ejecución del bloque except?

Un posible fallo es el de un nombre no válido. En este caso, el "IF NOT EXISTS" no se involucra en el problema y arrojaría un error diferente.

A MySQL no le gustan los puntos en los nombres de bases de datos, ya que crearía confusión en las consultas como esta "SELECT * FROM world.city;", donde utilizamos el punto como creador de ruta para bases de datos y tablas:

base_datos.crear_bd("base.datos.cualquiera")

Resultado en la consola

Ocurrió un error al intentar crear la base de datos base.datos.cualquiera.
Estas son las bases de datos que tiene el servidor:
('base_datos_cualquiera',)
('information_schema',)
('mysql',)
('performance_schema',)
('pruebas',)
('sakila',)
('sys',)
('world',)

Dejemos aquí este capítulo, pero no sin antes plantearte una cuestión para que pienses un poco.

Si te fijas, esta parte, se repite en las funciones crear_db() y eliminar_db().

print("Estas son las bases de datos que tiene el servidor:")
self.mostrar_bd()

¿Sabrías elaborar una forma de escribir esto una sola vez y aprovecharlo en las dos o en las que haga falta?

No te pierdas nada de todo el contenido que tengo sobre Python.

Un comentario en «¿Cómo crear aplicaciones con Python – MySQL y Tkinter?»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

curso Java Entrada anterior Crear clases y crear objetos en Java
curso de Python Entrada siguiente Crear aplicación gráfica con Python, MySQL y Tkinter