Creados scripts

This commit is contained in:
imnavajas
2025-05-07 11:51:52 +02:00
parent ec4d00e0ab
commit ff7ed8f594
4 changed files with 153 additions and 0 deletions

Binary file not shown.

View File

@ -0,0 +1,95 @@
import pandas as pd
import mysql.connector
"""
Script para insertar márgenes en la tabla 'papel_impresion_margenes' en base a un archivo Excel.
- Lee los papeles objetivo desde la hoja 'Papeles'.
- Lee los tramos de márgenes desde la hoja 'Tramos'.
- Elimina márgenes existentes de los papeles especificados.
- Inserta nuevos tramos de márgenes para cada papel.
Requiere:
- Archivo Excel con hojas 'Papeles' y 'Tramos'.
- Conexión activa a la base de datos MySQL.
- Paquetes: pandas, mysql-connector-python
Autor: IMN
Fecha: 07/05/2025
"""
# === CONFIGURACIÓN ===
RUTA_EXCEL = "Tramos papel.xlsx"
DB_CONFIG = {
"host": "82.223.102.252",
"user": "erp-dev",
"password": "Txhn75@10",
"database": "erp-dev"
}
# === CARGAR DATOS DESDE EXCEL ===
df_papeles = pd.read_excel(RUTA_EXCEL, sheet_name="Papeles")
df_tramos = pd.read_excel(RUTA_EXCEL, sheet_name="Tramos")
ids_papeles = df_papeles['ID'].dropna().astype(int).unique().tolist()
print("IDs de papeles cargados:", ids_papeles)
# === CONEXIÓN A MYSQL ===
conn = mysql.connector.connect(**DB_CONFIG)
cursor = conn.cursor()
# === ELIMINAR MÁRGENES EXISTENTES ===
delete_query = f"""
DELETE FROM papel_impresion_margenes
WHERE papel_impresion_id IN ({', '.join(map(str, ids_papeles))});
"""
cursor.execute(delete_query)
print(f"Eliminadas entradas antiguas para {len(ids_papeles)} papeles.")
# === ACTUALIZAR PRECIO TONELADA PARA CADA PAPEL ===
update_query = """
UPDATE lg_papel_impresion
SET precio_tonelada = %s
WHERE id = %s
"""
# Preparar los valores (precio, id)
updates = []
for _, row in df_papeles.iterrows():
papel_id = int(row["ID"])
precio = float(row["Precio Tonelada"])
updates.append((precio, papel_id))
# Ejecutar actualizaciones
cursor.executemany(update_query, updates)
conn.commit()
print(f"Actualizados {cursor.rowcount} precios en lg_papel_impresion.")
# === PREPARAR DATOS NUEVOS ===
insert_query = """
INSERT INTO papel_impresion_margenes (
papel_impresion_id, paginas_min, paginas_max, margen,
user_created_id, user_updated_id, is_deleted, deleted_at,
created_at, updated_at
) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())
"""
data = []
for papel_id in ids_papeles:
for _, row in df_tramos.iterrows():
data.append((
papel_id,
int(row["Páginas min"]),
int(row["Páginas máx"]),
float(row["%"]),
10, 10, 0, None
))
# === INSERTAR NUEVOS REGISTROS ===
cursor.executemany(insert_query, data)
conn.commit()
# === FINALIZAR ===
print(f"Insertadas {cursor.rowcount} filas.")
cursor.close()
conn.close()

View File

@ -0,0 +1,58 @@
import pandas as pd
import mysql.connector
"""
Script para actualizar la columna 'precio_tonelada' en la tabla 'lg_papel_impresion' desde un archivo Excel.
- Lee los valores de ID y Precio desde un archivo Excel con cabecera clara.
- Conecta a la base de datos y actualiza los precios de tonelada para los IDs especificados.
Requiere:
- Archivo Excel con columnas 'ID' y 'Precio Tonelada'.
- Conexión activa a la base de datos MySQL.
- Paquetes: pandas, mysql-connector-python
Autor: IMN
Fecha: 07/05/2025
"""
# === CONFIGURACIÓN DE LA BASE DE DATOS ===
DB_CONFIG = {
"host": "82.223.102.252",
"user": "erp-dev",
"password": "Txhn75@10",
"database": "erp-dev"
}
# === CARGAR DATOS DESDE EXCEL ===
df = pd.read_excel("ERP Safekat 2.0 - Papeles Impresion.xlsx")
# === CONEXIÓN A MYSQL ===
conn = mysql.connector.connect(**DB_CONFIG)
cursor = conn.cursor()
# === CONSULTA DE ACTUALIZACIÓN ===
update_query = """
UPDATE lg_papel_impresion
SET precio_tonelada = %s
WHERE id = %s
"""
# === PREPARAR DATOS ===
data = []
for _, row in df.iterrows():
try:
papel_id = int(row['ID'])
precio = float(row['Precio Tonelada'])
data.append((precio, papel_id))
except (ValueError, TypeError):
continue # Ignorar datos inválidos
# === EJECUTAR ACTUALIZACIONES ===
cursor.executemany(update_query, data)
conn.commit()
print(f"✅ Actualizados {cursor.rowcount} registros en lg_papel_impresion.")
# === CERRAR CONEXIÓN ===
cursor.close()
conn.close()