Skip to content

Commit e67d412

Browse files
committed
Improvement of the Session class + disable connection pool.
1 parent 272ac5d commit e67d412

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

PyFunceble/engine/database/loader/session.py

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252

5353
from sqlalchemy import create_engine
5454
from sqlalchemy.orm import sessionmaker
55+
from sqlalchemy.pool import NullPool
5556

5657
from .credential import Credential
5758

@@ -62,24 +63,26 @@ class Session:
6263
"""
6364

6465
migration_effective = False
66+
current_session = None
67+
uri = None
6568

6669
def __init__(self):
67-
self.credentials = Credential()
68-
self.engine = create_engine(
69-
self.credentials.get_uri(), pool_pre_ping=True, pool_recycle=180
70-
)
71-
self.session = sessionmaker(autocommit=False, autoflush=False, bind=self.engine)
72-
73-
self.current_session = None
70+
self.uri = Credential().get_uri()
7471

7572
def __enter__(self):
76-
self.create_new_session()
77-
78-
return self.current_session
73+
return self.create_new_session()
7974

8075
def __exit__(self, exc_type, exc_value, traceback):
8176
self.close()
8277

78+
def __make_session(self):
79+
"""
80+
Provides a new session to work with.
81+
"""
82+
83+
engine = create_engine(self.uri, poolclass=NullPool)
84+
return sessionmaker(autocommit=False, autoflush=False, bind=engine)
85+
8386
def query(self, *args, **kwargs):
8487
"""
8588
Make a query.
@@ -96,15 +99,17 @@ def close(self):
9699
# pylint: disable=no-member
97100
self.current_session.close()
98101

102+
del self.current_session
103+
self.current_session = None
104+
99105
def create_new_session(self):
100106
"""
101107
Provides a new session.
102108
"""
103109

104-
if self.current_session is not None:
105-
self.current_session.close()
106-
self.current_session = None
110+
# Close a previous connection (if exists).
111+
self.close()
107112

108-
self.current_session = self.session()
113+
self.current_session = self.__make_session()()
109114

110115
return self.current_session

0 commit comments

Comments
 (0)