import psycopg2 from psycopg2 import sql from psycopg2.extras import execute_values class DBContact: def __init__(self, db_obj: dict): """ Inicializa la conexión a la base de datos. :param db_obj: Diccionario con las credenciales de la base de datos. """ self.db_obj = db_obj def _get_connection(self): """ Crea y retorna una nueva conexión a la base de datos. """ return psycopg2.connect( host=self.db_obj['host'], port=self.db_obj['port'], database=self.db_obj['database'], user=self.db_obj['user'], password=self.db_obj['password'] ) def carga_contact(self, data_tuple: tuple): """ Inserta un nuevo contacto en la base de datos. :param data_tuple: Tupla con los valores (nombre, apellido, email, num_tel, size_co, rol_contacto, industry_type, tipo_req). :raises Exception: Si ocurre un error durante la ejecución de la consulta. """ query = sql.SQL(""" INSERT INTO contact (fecha, hora, nombre, apellido, email, num_tel, size_co, rol_contacto, industry_type, tipo_req) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """) try: with self._get_connection() as conn: with conn.cursor() as cursor: cursor.execute(query, data_tuple) conn.commit() except Exception as e: raise RuntimeError(f"Error al insertar contacto: {e}")