示例#1
0
 def eliminar(cls, persona):
     with CursorDelPool() as cursor:
         logger.debug(cursor.mogrify(cls.__ELIMINAR))
         logger.debug(f'Persona a eliminar: {persona}')
         values = (persona.get_id_persona())
         cursor.execute(cls.__ELIMINAR, values)
         return cursor.rowcount
示例#2
0
 def actualizar(cls, persona):
     with CursorDelPool() as cursor:
         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)
         return cursor.rowcount
示例#3
0
 def insertar(cls, persona):
     with CursorDelPool() as cursor:
         logger.debug(cursor.mogrify(cls.__INSERTAR))
         logger.debug(f'Persona a insertar: {persona}')
         values = (persona.get_nombre(), persona.get_apellido(),
                   persona.get_email())
         cursor.execute(cls.__INSERTAR, values)
         return cursor.rowcount
示例#4
0
 def seleccionar(cls):
     with CursorDelPool() as cursor:
         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)
         return personas
示例#5
0
 def obtenerPool(cls):
     if cls.__pool is None:
         try:
             cls.__pool = pool.SimpleConnectionPool(cls.__MIN_CON,
                                                    cls.__MAX_CON,
                                                    host=cls.__HOST,
                                                    user=cls.__USERNAME,
                                                    password=cls.__PASSWORD,
                                                    port=cls.__DB_PORT,
                                                    database=cls.__DATABASE)
             logger.debug(f'Creación pool existosa: {cls.__pool}')
             return cls.__pool
         except Exception as e:
             logger.error(f'Error al crear el pool de conexiones: {e}')
             sys.exit()
     else:
         return cls.__pool
 def __exit__(self, exc_type, exc_val, exc_tb):
     logger.debug(f'Se ejecuta método __exit__')
     if exc_val:
         self.__conn.rollback()
         logger.debug(f'Ocurrió una excepción: {exc_val}')
     else:
         self.__conn.commit()
         logger.debug('Commit de la transacción')
     # Cerramos el cursor
     self.__cursor.close()
     # Regresar la conexion al pool
     Conexion.liberarConexion(self.__conn)
示例#7
0
    @classmethod
    def eliminar(cls, persona):
        with CursorDelPool() as cursor:
            logger.debug(cursor.mogrify(cls.__ELIMINAR))
            logger.debug(f'Persona a eliminar: {persona}')
            values = (persona.get_id_persona())
            cursor.execute(cls.__ELIMINAR, values)
            return cursor.rowcount


if __name__ == '__main__':
    # Listado de personas
    # 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}')
示例#8
0
 def cerrarConexiones(cls):
     # Cerrar el pool y todas sus conexiones
     cls.obtenerPool().closeall()
     logger.debug(f'Cerramos todas las conexiones del pool: {cls.__pool}')
示例#9
0
 def liberarConexion(cls, conexion):
     # Regresar el objeto conexion al pool
     cls.obtenerPool().putconn(conexion)
     logger.debug(f'Regresamos la conexion al pool: {conexion}')
     logger.debug(f'Estado del pool: {cls.__pool}')
示例#10
0
 def obtenerConexion(cls):
     # Obtener una conexion del pool
     conexion = cls.obtenerPool().getconn()
     logger.debug(f'Conexion obtenida del pool: {conexion}')
     return conexion
示例#11
0
 def __enter__(self):
     logger.debug('Inicio de with método __enter__')
     self.__conn = Conexion.obtenerConexion()
     self.__cursor = self.__conn.cursor()
     return self.__cursor
示例#12
0
    # Inicio de with
    def __enter__(self):
        logger.debug('Inicio de with método __enter__')
        self.__conn = Conexion.obtenerConexion()
        self.__cursor = self.__conn.cursor()
        return self.__cursor

    # fin del bloque with
    def __exit__(self, exc_type, exc_val, exc_tb):
        logger.debug(f'Se ejecuta método __exit__')
        if exc_val:
            self.__conn.rollback()
            logger.debug(f'Ocurrió una excepción: {exc_val}')
        else:
            self.__conn.commit()
            logger.debug('Commit de la transacción')
        # Cerramos el cursor
        self.__cursor.close()
        # Regresar la conexion al pool
        Conexion.liberarConexion(self.__conn)


if __name__ == '__main__':
    # Obtener un cursor a partir de la conexion del pool
    # with se ejecuta __enter_ y termina con __exit__
    with CursorDelPool() as cursor:
        cursor.execute('SELECT * FROM persona')
        logger.debug('Listado de Personas')
        logger.debug(cursor.fetchall())
示例#13
0
        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)