Рубрики
Без рубрики

Crage Pool de Conexiones con psycopg2 y python

Defionición de Pool de Conexiones: ES CONVUNTO LEADADO de Conexiones Hacia Una Base … Помечено Postgres, Python.

Defionición de Pool de Conexiones:

ES CONVUNTO LIVENADO DE CONEXIONES HACIA UNA BASE DETOS, ESTAS CONEXIONES SON REETILIZable POR LOS USUARIOS, ESTE ES MANEJADO POR ООН Сервидор де Анкякосики.

Акяксион:

  • Примеро Криремос ООН Archivo пункт La Clase Conexión, Aquí Pondremos Todo Lo Release A La Conexión A La Base de Datos

conexion.py

  • Del módulo de psycopg2 Импортируют бассейн

от Psycopg2 Импорт пула

  • Crage Una Clase Conexion, Ya Con Los Parametros Como Host, имя пользователя, пароль и т. Д. Тодос Лос Параметрос Комо привадос
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 Crage 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 Crage Una ClassMethod, ObtenerConexion (), Para Obtener del Pool Una Conexió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 ClassMethod, LiberArconexion (), Para Retornar La Conexión Al Pool
#Regresar el objeto conexion al pool
@classmethod
def liberarConexion(cls, conexion):
    cls.obtenerPool().putconn(conexion)
  • Utilizaremos Otro ClassMethod, Cerrarconexiones (), Para Cerrarar 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}')
  • Queí un ejemplo de como utilizar los métodos de clase
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()

Оригинал: “https://dev.to/luiszapatayamo/crear-pool-de-conexiones-con-psycopg2-y-python-4m65”