On 5/25/15 6:08 AM, [email protected] wrote:
What do you think about that (simplified) code?
An instance of this class would be added to any gui-class (e.g. a
dialog) which handle data over SQLAlchemy.
The session would be destroyed/closed correct when the Controller
instance is destroyed, too. Correct?
[code]
import sqlalchemy as sa
import sqlalchemy.orm as sao
_engine = sa.create_engine('postgres://...')
class BasicController():
"""
"""
def __init__(self):
self._session = None
def CreateSession(self):
if self._session is not None:
raise AttributeError('...')
self._session = sao.sessionmaker(bind=_engine)()
@property
def session(self):
"""
"""
if not self._session:
self.CreateSession()
return self._session
CreateSession and sessionmaker do the same thing. I'd lose one or the
other.
For the memoized thing, I'd use a decorator like Pyramid @reify or
SQLAlchemy's @memoized_property, wouldn't bother with all those
conditionals and such.
As for "the session would be destroyed/closed", I'd never rely on that,
that's a poor design, and it will lead to problems like connection pool
overflows and deadlocks. The Session holds onto database resources and
those resources should be released explicitly when a web request is
complete. See
http://docs.sqlalchemy.org/en/rel_1_0/orm/session_basics.html#when-do-i-construct-a-session-when-do-i-commit-it-and-when-do-i-close-it.
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.