I have this proxy class for SQLAlchemy Session:
class MySqlSession(object):
def __init__(self):
self.sql_session = DBSession()
def close(self):
if self._closed:
return
self._closed = True
self._session.rollback()
self._session.close()
def __del__(delf):
self.close()
DBSession is created by
DBSession = sessionmaker(bind=engine, autoflush=True, expire_on_commit=True)
and I receive exception:
sqlalchemy.exc.ProgrammingError: (sqlite3.ProgrammingError) Cannot operate on a closed database.
on self._session.rollback()
line when __del__ is called, but all queries to object, which received from self._session before __del__ calling is success.
How can I solve this problem?