Spaces:
Sleeping
Sleeping
| import os | |
| import psycopg2 | |
| from psycopg2 import pool, OperationalError | |
| from dotenv import load_dotenv | |
| from typing import Optional, Union, List, Dict, Tuple | |
| import psycopg2.extensions | |
| # Load environment variables | |
| load_dotenv() | |
| def log_method(func): | |
| def wrapper(*args, **kwargs): | |
| print(f"Calling method {func.__name__}") | |
| return func(*args, **kwargs) | |
| return wrapper | |
| class DatabaseConnection: | |
| _instance = None # For Singleton pattern (optional) | |
| def __init__(self, db_user, db_password, db_host, db_port, db_name): | |
| self.db_user = db_user | |
| self.db_password = db_password | |
| self.db_host = db_host | |
| self.db_port = db_port | |
| self.db_name = db_name | |
| try: | |
| # Create a connection pool (min and max connection count) | |
| self.connection_pool = psycopg2.pool.SimpleConnectionPool( | |
| 1, 10, # Min and max number of connections | |
| user=db_user, | |
| password=db_password, | |
| host=db_host, | |
| port=db_port, | |
| database=db_name | |
| ) | |
| if self.connection_pool: | |
| print("Connection pool created successfully") | |
| except OperationalError as e: | |
| print(f"Error while connecting to PostgreSQL: {e}") | |
| def execute_query(self, query: str, params: Optional[Union[List, Dict]] = None, connection: Optional[psycopg2.extensions.connection] = None) -> List[Tuple]: | |
| cursor = self.connection_pool.getconn().cursor() | |
| cursor.execute(query, params) | |
| return cursor |