def obtenerCursor(cls): if cls.__cursor is None: try: cls.__cursor = cls.obtenerConexion().cursor() logger.debug(f'Se abrió el cursor con éxito: {cls.__cursor}') return cls.__cursor except Exception as e: logger.error(f'Error al obtener cursor: {e}') else: return cls.__cursor
def seleccionar(cls): cursor = Conexion.obtenerCursor() logger.debug(cursor.mogrify(cls.__SELECCIONAR)) cursor.execute(cls.__SELECCIONAR) registros = cursor.fetchall() personas = [] for registro in registros: persona = Persona(registro[0], registro[1], registro[2], registro[3]) personas.append(persona) Conexion.cerrar() return personas
def cerrar(cls): if cls.__cursor is not None: try: cls.__cursor.close() except Exception as e: logger.error(f'Error al cerrar cursor: {e}') if cls.__conexion is not None: try: cls.__conexion.close() except Exception as e: logger.error(f'Error al cerrar conexión: {e}') logger.debug('Se han cerrado los objetos de conexion y cursor')
def eliminar(cls, persona): try: conexion = Conexion.obtenerConexion() cursor = Conexion.obtenerCursor() logger.debug(cursor.mogrify(cls.__ELIMINAR)) logger.debug(f'Persona a eliminar: {persona}') values = (persona.get_id_persona()) cursor.execute(cls.__ELIMINAR, values) conexion.commit() return cursor.rowcount except Exception as e: conexion.rollback() logger.error(f'Excepción al eliminar persona: {e}') finally: Conexion.cerrar()
def obtenerConexion(cls): if cls.__conexion is None: try: cls.__conexion = db.connect(host=cls.__HOST, user=cls.__USERNAME, password=cls.__PASSWORD, port=cls.__DB_PORT, database=cls.__DATABASE) logger.debug(f'Conexion exitosa: {cls.__conexion}') return cls.__conexion except Exception as e: logger.error(f'Error al conectar a la BD: {e}') sys.exit() else: return cls.__conexion
def actualizar(cls, persona): try: conexion = Conexion.obtenerConexion() cursor = Conexion.obtenerCursor() logger.debug(cursor.mogrify(cls.__ACTUALIZAR)) logger.debug(f'Persona a actualizar: {persona}') values = (persona.get_nombre(), persona.get_apellido(), persona.get_email(), persona.get_id_persona()) cursor.execute(cls.__ACTUALIZAR, values) conexion.commit() return cursor.rowcount except Exception as e: conexion.rollback() logger.error(f'Excepción al actualizar persona: {e}') finally: Conexion.cerrar()
return self.__apellido def set_apellido(self, apellido): self.__apellido = apellido def get_email(self): return self.__email def set_apellido(self, apellido): self.__apellido = apellido def __str__(self): return (f'Id Persona: {self.__id_persona}, ' f'Nombre: {self.__nombre}, ' f'Apellido: {self.__apellido}, ' f'Email: {self.__email}') if __name__ == '__main__': persona1 = Persona(1, 'Juan', 'Pérez', 'email') logger.debug(persona1) # simulando un objeto a inserta de tipo persona persona2 = Persona(nombre='Karla', apellido='Gómez', email='*****@*****.**') logger.debug(persona2) # simular el caso de eliminar un objeto persona persona3 = Persona(id_persona=3) logger.debug(persona3)
values = (persona.get_id_persona()) cursor.execute(cls.__ELIMINAR, values) conexion.commit() return cursor.rowcount except Exception as e: conexion.rollback() logger.error(f'Excepción al eliminar persona: {e}') finally: Conexion.cerrar() if __name__ == '__main__': # personas = PersonaDao.seleccionar() # for persona in personas: # logger.debug(persona) # Insertamos un nuevo registro # persona = Persona(nombre='Pedro', apellido='Najera', email='*****@*****.**') # personas_insertadas = PersonaDao.insertar(persona) # logger.debug(f'Personas insertadas: {personas_insertadas}') # Actualizar un registro existente # persona = Persona(1, 'Juan', 'Pérez2', '*****@*****.**') # persona_actualizada = PersonaDao.actualizar(persona) # logger.debug(f'Personas actualizadas: {persona_actualizada}') # Eliminar un registro existente persona = Persona('9') personas_eliminadas = PersonaDao.eliminar(persona) logger.debug(f'Personas elimiadas: {personas_eliminadas}')