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”