45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
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}")
|