クレールプールde conexiones




デプールデConexionesの

Es un conjunto limitado de conexiones hacia una base de datos, estas conexiones son reutilizables por los usuarios, este es manejado por un servidor de aplicaciones.



アプルカシ
  • Primero crearemos un archivo para la clase conexi des n , aquc des pondremos todo lo referente a a conexi no n a la base de datos
  • conexion.py

  • デルム・ディーpsycopg2 輸入業者pool
  • from psycopg2 import pool

  • クレアウナのしなやかなConexion、ya con los parのメトロcomoホスト、ユーザ名、パスワードなど
  • class Conexion:
        __DATABASE = 'test_db'
        __USERNAME = 'postgres'
        __PASSWORD = 'admin'
        __DB_PORT = '5432'
        __HOST = '127.0.0.1'
        __MIN_CON = 1
        __MAX_CON = 5
        __pool = None**
    
  • Luego crear una classmethod , obtenerpool (), para el pool de conexiones :
  • #Obteniendo varias coexiones a la base de datos con pool
    @classmethod
    def obtenerPool(cls):
        if cls.__pool == 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'Creacion pool exitosa: {cls.__pool}')
                return cls.__pool
            except Exception as e:
                logger.error(f'Errror al crear el pool de conexiones: {e}')
                sys.exit()
        else:
            return cls.__pool
    
  • Luego tenemos que crear una classmethod , obtenerconexion (), para obtener del pool una una exexi n n :
  • #Obteniendo la conexion del pool
    @classmethod
    def obtenerConexion(cls):
        conexion = cls.obtenerPool().getconn()
        logger.debug(f'Conexión obtenida del pool: {conexion}')
        return conexion
    
  • Creamos Otraクラスメソッド、LiberarContract ()、para retornar la conexi
  • #Regresar el objeto conexion al pool
    @classmethod
    def liberarConexion(cls, conexion):
        cls.obtenerPool().putconn(conexion)
    
  • otroクラスメソッド、cerrarconexione ()、para cerrar las conexiones
  • #Cerrando todas las conexiones del pool
    @classmethod
    def cerrarConexiones(cls):
        cls.obtenerPool().closeall()
        logger.debug(f'Cerramos todas las conexiones del pool: {cls.__pool}')
    
  • <翻訳> ACLIによるClao活用の試み
  • if __name__ == "__main__":
        #Obtener una conexion a partir del pool
        conexion1 = Conexion.obtenerConexion()
        conexion2 = Conexion.obtenerConexion()
        #Regresamos las conexiones al pool
        Conexion.liberarConexion(conexion1)
        Conexion.liberarConexion(conexion2)
        #Cerramos el pool
        Conexion.cerrarConexiones()
        #error el pool ya esta cerrado
        #conexion3 = Conexion.obtenerConexion()