Cómo Conectar Python a una Base de Datos MariaDB en Google Cloud: Guía para Expertos

Conectar Mariadb en GoogleCloud con Python

¿Necesitas integrar Python con una base de datos MariaDB alojada en Google Cloud? ¡Estás en el lugar correcto! En este artículo, te guiaré paso a paso para establecer una conexión robusta y eficiente, optimizada para entornos profesionales.

Si eres un experto en Python, Google Cloud y MariaDB, sabrás que la integración entre estos sistemas es clave para aplicaciones escalables. Al final del artículo, no olvides dejar tus comentarios o compartir en redes sociales si te resulta útil. ¡Vamos allá!


🔹 Requisitos Previos

Antes de comenzar, asegúrate de tener:

Una instancia de MariaDB en Google Cloud SQL (configurada con IP pública o acceso privado).
Python 3.8+ instalado en tu entorno local o en Cloud Functions/Compute Engine.
Bibliotecas necesarias: mysql-connector-python o PyMySQL.
Credenciales de acceso: usuario, contraseña, IP/hostname y nombre de la base de datos.


🔸 Paso 1: Configuración de Google Cloud SQL para MariaDB

1.1 Crear una instancia de Cloud SQL con MariaDB

  1. Ve a Google Cloud Console.
  2. Navega a SQL en el menú izquierdo.
  3. Haz clic en "Crear instancia" y selecciona MariaDB.
  4. Configura la instancia según tus necesidades (CPU, RAM, almacenamiento).

1.2 Configurar conexiones autorizadas

Si usas IP pública:
- Añade tu IP o el rango permitido en "Redes autorizadas".

Si usas Private IP (VPC):
- Asegúrate de que tu aplicación esté en la misma VPC o configurada con Cloud SQL Auth Proxy.

1.3 Crear un usuario y una base de datos

CREATE DATABASE mi_basedatos;
CREATE USER 'usuario_python'@'%' IDENTIFIED BY 'TuPasswordSeguro123!';
GRANT ALL PRIVILEGES ON mi_basedatos.* TO 'usuario_python'@'%';
FLUSH PRIVILEGES;

🔹 Paso 2: Instalar el Conector de Python para MariaDB

Existen dos bibliotecas populares para conectar Python con MariaDB:

Opción 1: mysql-connector-python (oficial de MySQL, compatible con MariaDB)

pip install mysql-connector-python

Opción 2: PyMySQL (alternativa pura en Python)

pip install PyMySQL

🔸 Paso 3: Conexión desde Python

3.1 Usando mysql-connector-python

import mysql.connector
from mysql.connector import Error

def connect_to_mariadb():
    try:
        connection = mysql.connector.connect(
            host="IP_PÚBLICA_O_PRIVADA",  # Ej: "34.68.123.45" o "10.0.0.4"
            database="mi_basedatos",
            user="usuario_python",
            password="TuPasswordSeguro123!",
            port=3306  # Puerto predeterminado de MariaDB
        )

        if connection.is_connected():
            print("✅ ¡Conexión exitosa a MariaDB en Google Cloud!")
            cursor = connection.cursor()
            cursor.execute("SELECT VERSION()")
            version = cursor.fetchone()
            print(f"🔹 Versión de MariaDB: {version[0]}")

    except Error as e:
        print(f"❌ Error de conexión: {e}")
    finally:
        if connection.is_connected():
            cursor.close()
            connection.close()
            print("🔌 Conexión cerrada.")

connect_to_mariadb()

3.2 Usando PyMySQL

import pymysql

def connect_with_pymysql():
    try:
        connection = pymysql.connect(
            host="IP_PÚBLICA_O_PRIVADA",
            user="usuario_python",
            password="TuPasswordSeguro123!",
            database="mi_basedatos",
            port=3306
        )

        with connection.cursor() as cursor:
            cursor.execute("SELECT DATABASE()")
            db_name = cursor.fetchone()
            print(f"🔹 Base de datos conectada: {db_name[0]}")

    except pymysql.MySQLError as e:
        print(f"❌ Error de conexión: {e}")
    finally:
        if connection:
            connection.close()
            print("🔌 Conexión cerrada.")

connect_with_pymysql()

🔹 Paso 4: Mejores Prácticas para Entornos de Producción

4.1 Usar Cloud SQL Proxy para mayor seguridad

Si trabajas en producción, evita exponer IPs públicas. Usa Cloud SQL Proxy:

  1. Descarga el proxy:

    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.6.1/cloud-sql-proxy.linux.amd64
    chmod +x cloud-sql-proxy
    
  2. Ejecuta el proxy:

    ./cloud-sql-proxy mi-proyecto:us-central1:mi-instancia-mariadb &
    
  3. Conéctate desde Python usando host="127.0.0.1".

4.2 Manejo de conexiones con Pooling

Para evitar sobrecargar la DB, usa connection pooling:

from mysql.connector import pooling

connection_pool = pooling.MySQLConnectionPool(
    pool_name="mariadb_pool",
    pool_size=5,
    host="IP_O_PROXY",
    database="mi_basedatos",
    user="usuario_python",
    password="TuPasswordSeguro123!"
)

def get_data():
    try:
        connection = connection_pool.get_connection()
        cursor = connection.cursor()
        cursor.execute("SELECT * FROM usuarios LIMIT 10")
        results = cursor.fetchall()
        for row in results:
            print(row)
    finally:
        if connection.is_connected():
            cursor.close()
            connection.close()

get_data()

🔸 Paso 5: Ejecutando Consultas Avanzadas

Ahora que la conexión está lista, puedes ejecutar consultas complejas:

5.1 Insertar Datos

def insert_user(nombre, email):
    try:
        connection = mysql.connector.connect(**config)
        cursor = connection.cursor()
        query = "INSERT INTO usuarios (nombre, email) VALUES (%s, %s)"
        cursor.execute(query, (nombre, email))
        connection.commit()
        print("👤 Usuario insertado correctamente.")
    except Error as e:
        print(f"❌ Error al insertar: {e}")
    finally:
        if connection.is_connected():
            cursor.close()
            connection.close()

insert_user("Juan Pérez", "juan@example.com")

5.2 Transacciones con Rollback

def transfer_funds(origen_id, destino_id, monto):
    try:
        connection = mysql.connector.connect(**config)
        cursor = connection.cursor()

        connection.start_transaction()

        # Descontar del origen
        cursor.execute("UPDATE cuentas SET saldo = saldo - %s WHERE id = %s", (monto, origen_id))

        # Añadir al destino
        cursor.execute("UPDATE cuentas SET saldo = saldo + %s WHERE id = %s", (monto, destino_id))

        connection.commit()
        print("💰 Transferencia exitosa.")

    except Error as e:
        connection.rollback()
        print(f"❌ Error en transacción: {e}")
    finally:
        if connection.is_connected():
            cursor.close()
            connection.close()

transfer_funds(1, 2, 100.50)

🔹 Conclusión: Python + MariaDB en Google Cloud = 🚀

Ahora ya sabes cómo conectar Python con MariaDB en Google Cloud de manera segura y eficiente. Ya sea para análisis de datos, aplicaciones web o microservicios, esta integración es fundamental en entornos profesionales.

📢 ¿Te ha sido útil?

👉 Déjanos un comentario si tienes dudas o sugerencias.

¡Hasta la próxima! 🚀


🔗 Más recursos:
- Documentación oficial de Cloud SQL
- MySQL Connector/Python
- PyMySQL en GitHub

Artículos Relacionados

Comentarios