
Research
/Security News
Contagious Interview Campaign Escalates With 67 Malicious npm Packages and New Malware Loader
North Korean threat actors deploy 67 malicious npm packages using the newly discovered XORIndex malware loader.
mysql-connection-pool
Advanced tools
Una clase para manejar conexiones a MySQL con un pool de conexiones y soporte para múltiples hilos.
Este módulo proporciona una clase MySQLConnectionPool
que gestiona un pool de conexiones a MySQL de forma segura para hilos, con capacidades avanzadas de logging y manejo de transacciones.
pip install mysql-connection-pool
from mysql_connection_pool import MySQLConnectionPool
# Configuración inicial
db = MySQLConnectionPool(
host='localhost',
user='tu_usuario',
password='tu_contraseña',
database='base_inicial',
pool_size=5,
logs='logs/mysql.log', # Ruta relativa o absoluta
log_language='es', # 'es' o 'en'
clear_logs=True # Limpiar archivo de log al iniciar
)
# 👥 Consulta SELECT simple
usuarios = db.fetchall("SELECT * FROM usuarios")
# 🔎 Consulta con parámetros
usuario = db.fetchone("SELECT * FROM usuarios WHERE id = %s", (1,))
# 📝 Inserción con commit automático
filas_afectadas, ultimo_id = db.commit_execute(
"INSERT INTO productos (nombre, precio) VALUES (%s, %s)",
("Laptop", 999.99)
)
# 🔄 Cambiar de base de datos
db.switch_database('otra_base_datos')
execute(query, params=None, database=None, enable_logging=False)
Ejecuta una consulta y devuelve cursor y conexión (debes cerrarla manualmente).
cursor, conn = db.execute("SELECT * FROM tabla")
try:
resultados = cursor.fetchall()
finally:
conn.close() # ¡Importante cerrar la conexión! 🔒
execute_safe(query, params=None, database=None, enable_logging=False)
Ejecuta una consulta y cierra los recursos automáticamente.
resultados = db.execute_safe("SELECT * FROM productos WHERE precio > %s", (100,))
fetchone(query, params=None, database=None, enable_logging=False)
Obtiene una sola fila.
usuario = db.fetchone("SELECT * FROM usuarios WHERE email = %s", ("user@example.com",))
fetchall(query, params=None, database=None, enable_logging=False)
Obtiene todas las filas.
productos = db.fetchall("SELECT * FROM productos")
commit_execute(query, params=None, database=None, enable_logging=False)
Ejecuta una consulta de escritura (INSERT/UPDATE/DELETE) con commit automático.
filas, id_insertado = db.commit_execute(
"INSERT INTO ventas (producto_id, cantidad) VALUES (%s, %s)",
(5, 2)
)
switch_database(database)
Cambia a otra base de datos.
db.switch_database('base_de_datos_nueva')
Versiones con _logged
que activan logging por defecto:
db.execute_logged(...)
db.fetchone_logged(...)
# etc...
MySQLConnectionPool.run_sql_file('ruta/archivo.sql')
MySQLConnectionPool.run_multiple_sql_files([
'ruta/archivo1.sql',
'ruta/archivo2.sql'
])
MySQLConnectionPool.run_multiple_sql_files_from_directory(
'ruta/directorio',
['script1.sql', 'script2.sql']
)
from mysql_connection_pool import MySQLConnectionPool
import os
# Configuración inicial
db = MySQLConnectionPool(
host='localhost',
user='root',
password='password123',
database='mi_negocio',
pool_size=5,
logs=os.path.join('logs', 'mysql.log'),
log_language='es',
clear_logs=True
)
try:
# 1️⃣ Crear tabla si no existe
db.commit_execute_logged("""
CREATE TABLE IF NOT EXISTS clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
fecha_registro DATETIME DEFAULT CURRENT_TIMESTAMP
)
""")
# 2️⃣ Insertar datos
filas_afectadas, ultimo_id = db.commit_execute_logged(
"INSERT INTO clientes (nombre, email) VALUES (%s, %s)",
("Juan Pérez", "juan@example.com")
)
print(f"ID insertado: {ultimo_id} 🎉")
# 3️⃣ Consultar datos
clientes = db.fetchall_logged("SELECT * FROM clientes")
print("Clientes:", clientes)
# 4️⃣ Cambiar de base de datos y ejecutar script SQL
db.switch_database('otra_base')
MySQLConnectionPool.run_sql_file('scripts/migracion.sql')
except Exception as e:
print("❌ Error:", e)
El sistema de logging registra:
Ejemplo de entrada de log:
══════════════════════════════[2023-07-20 14:30:45] RUN_SQL_FILE══════════════════════════════
Action: Procesando archivo SQL: migracion.sql
Ejecutando sentencias SQL: 3
══════════════════════════════════════════════════════════════════════════════════════════════
El parser soporta:
Ejemplo de archivo SQL complejo:
DELIMITER //
CREATE PROCEDURE calcular_total(IN cliente_id INT)
BEGIN
SELECT SUM(monto) AS total
FROM pedidos
WHERE cliente_id = cliente_id;
END //
DELIMITER ;
-- Insertar datos iniciales
INSERT INTO config (parametro, valor) VALUES ('version', '1.0');
FAQs
Una clase para manejar conexiones a MySQL con un pool de conexiones y soporte para múltiples hilos.
We found that mysql-connection-pool demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
North Korean threat actors deploy 67 malicious npm packages using the newly discovered XORIndex malware loader.
Security News
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
Security News
CAI is a new open source AI framework that automates penetration testing tasks like scanning and exploitation up to 3,600× faster than humans.