Bases de Datos en MySQL
MySQL es uno de los sistemas de gestión de bases de datos relacionales más populares. Es ampliamente utilizado en aplicaciones web y empresariales debido a su estabilidad, rendimiento y soporte para múltiples usuarios y transacciones complejas.
Conceptos Clave
Relacional: MySQL organiza los datos en tablas que se relacionan entre sí.
Escalabilidad: Adecuado para aplicaciones pequeñas y grandes.
Transacciones: Admite transacciones para garantizar la integridad de los datos.
SQL estándar: Usa SQL para definir, consultar y manipular datos.
Comunidad activa: Gran cantidad de documentación y soporte.
Configuración de MySQL con Docker
Instrucciones
Crear un contenedor de MySQL con Docker:
Ejecuta el siguiente comando para iniciar un servidor MySQL en Docker.
docker run --name mysql-database -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=tienda -p 3306:3306 -d mysql:8.0
Parámetros:
–name: Nombre del contenedor. MYSQL_ROOT_PASSWORD: Contraseña para el usuario root. MYSQL_DATABASE: Nombre de la base de datos que se creará al iniciar. -p 3306:3306: Mapea el puerto del contenedor al puerto local. mysql:8.0: Imagen oficial de MySQL.
Acceder al contenedor (opcional):
docker exec -it mysql-database mysql -uroot -proot
Ejemplos
Ejemplo 1: Conexión a la base de datos desde Python
import mysql.connector
= mysql.connector.connect(
conexion ="localhost",
host="root",
user="root",
password="tienda"
database
)
if conexion.is_connected():
print("Conexión exitosa a MySQL")
conexion.close()
En el ejemplo anterior, se establece una conexión a la base de datos MySQL llamada tienda con el usuario root y la contraseña root.
Ejemplo 2: Crear una tabla
= mysql.connector.connect(
conexion ="localhost",
host="root",
user="root",
password="tienda"
database
)= conexion.cursor()
cursor """
cursor.execute(CREATE TABLE IF NOT EXISTS productos (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(255) NOT NULL,
precio DECIMAL(10, 2) NOT NULL
)
""")
conexion.commit() conexion.close()
En este caso, se crea una tabla productos con columnas para id, nombre y precio.
Ejemplo 3: Insertar datos
= mysql.connector.connect(
conexion ="localhost",
host="root",
user="root",
password="tienda"
database
)= conexion.cursor()
cursor "INSERT INTO productos (nombre, precio) VALUES (%s, %s)", ("Laptop", 1299.99))
cursor.execute(
conexion.commit() conexion.close()
En este caso, se inserta un nuevo producto en la tabla productos con nombre “Laptop” y precio 1299.99.
Ejemplo 4: Consultar datos
= mysql.connector.connect(
conexion ="localhost",
host="root",
user="root",
password="tienda"
database
)= conexion.cursor()
cursor "SELECT * FROM productos")
cursor.execute(for fila in cursor.fetchall():
print(fila)
conexion.close()
La consulta SELECT * FROM productos recupera todos los registros de la tabla productos y los imprime en pantalla.
Ejemplo Práctico
Objetivo: Crear, administrar y consultar productos en una base de datos MySQL usando Python.
Descripción: Se implementará un sistema que permite agregar, listar, y buscar productos. La base de datos será configurada mediante Docker.
Instrucciones:
- Configura un contenedor de MySQL usando Docker.
- Crea una tabla productos en la base de datos tienda.
- Implementa funciones para administrar los productos desde Python.
Posible solución
Código:
import mysql.connector
def conectar():
return mysql.connector.connect(
="localhost",
host="root",
user="root",
password="tienda"
database
)
def crear_tabla():
= conectar()
conexion = conexion.cursor()
cursor """
cursor.execute( CREATE TABLE IF NOT EXISTS productos (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(255) NOT NULL,
precio DECIMAL(10, 2) NOT NULL
)
""")
conexion.commit()
conexion.close()
def agregar_producto(nombre, precio):
= conectar()
conexion = conexion.cursor()
cursor "INSERT INTO productos (nombre, precio) VALUES (%s, %s)", (nombre, precio))
cursor.execute(
conexion.commit()
conexion.close()
def listar_productos():
= conectar()
conexion = conexion.cursor()
cursor "SELECT * FROM productos")
cursor.execute(for fila in cursor.fetchall():
print(fila)
conexion.close()
# Uso
crear_tabla()"Mouse", 19.99)
agregar_producto("Teclado", 49.99)
agregar_producto(print("Productos registrados:")
listar_productos()
Conclusiones
- MySQL es una base de datos relacional popular con soporte para múltiples usuarios y transacciones.
- Docker facilita la configuración de entornos de desarrollo con contenedores aislados.
- Python se puede utilizar para interactuar con bases de datos MySQL mediante el conector mysql-connector-python.