Skip to content

Commit 7d6e8d3

Browse files
committed
Fix: completely cleanup all scoped sessions
1 parent 4055d3c commit 7d6e8d3

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

yhttp/ext/sqlalchemy/orm.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ def __init__(self, basemodel, url=None):
1111
self.url = url
1212
self.engine = None
1313
self.basemodel = basemodel
14-
self.session = scoped_session(sessionmaker())
14+
self._session = scoped_session(sessionmaker())
15+
16+
def session(self):
17+
return self._session()
1518

1619
def copy(self, url=None):
1720
return ORM(self.basemodel, url=url or self.app.settings.db.url)
@@ -25,10 +28,12 @@ def connect(self, url=None):
2528
assert u is not None
2629

2730
self.engine = create_engine(u, isolation_level='REPEATABLE READ')
28-
self.session.configure(bind=self.engine)
31+
self._session.configure(bind=self.engine)
2932

3033
def disconnect(self):
3134
close_all_sessions()
35+
self._session.expunge_all()
36+
self._session.remove()
3237
self.engine.dispose()
3338
self.engine = None
3439

@@ -65,6 +70,6 @@ def outter(*a, **kw):
6570

6671
raise
6772
finally:
68-
self.session.reset()
73+
self._session.reset()
6974

7075
return outter

0 commit comments

Comments
 (0)