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

Conectar Mariadb en GoogleCloud con Python

También visita el artículo: Python y MySql Primeros pasos

¿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