¿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
- Ve a Google Cloud Console.
- Navega a SQL en el menú izquierdo.
- Haz clic en "Crear instancia" y selecciona MariaDB.
- 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:
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
Ejecuta el proxy:
./cloud-sql-proxy mi-proyecto:us-central1:mi-instancia-mariadb &
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
Comentarios