38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
import oracledb
|
|
from logging_config import get_logger
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
class OracleConnector:
|
|
def __init__(self, config):
|
|
self.config = config
|
|
self.pool = None
|
|
|
|
def initialize_pool(self):
|
|
try:
|
|
self.pool = oracledb.create_pool(
|
|
user=self.config.db_user,
|
|
password=self.config.db_password,
|
|
dsn=self.config.db_dsn,
|
|
min=1,
|
|
max=5,
|
|
increment=1
|
|
)
|
|
logger.info("Oracle connection pool initialized")
|
|
except Exception:
|
|
logger.error("Failed to initialize Oracle pool", exc_info=True)
|
|
raise
|
|
|
|
def get_connection(self):
|
|
if not self.pool:
|
|
self.initialize_pool()
|
|
return self.pool.acquire()
|
|
|
|
def close(self):
|
|
if self.pool:
|
|
try:
|
|
self.pool.close()
|
|
logger.info("Oracle pool closed")
|
|
except Exception:
|
|
logger.error("Error closing pool", exc_info=True)
|