formha/forms_py/cls_db.py

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}")