diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-07-14 21:02:35 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-07-14 21:02:35 +0000 |
commit | d4c60a64a62e5c2542a27918e6d3c9fc26875736 (patch) | |
tree | ec997c16e8a0912dc4f1b64bf8799bd9f7d45fe1 /lib/sqlalchemy/engine/base.py | |
parent | bc6fbfa84ab6e1e9639e00cc23b3c41ab1d30dc1 (diff) | |
download | sqlalchemy-d4c60a64a62e5c2542a27918e6d3c9fc26875736.tar.gz |
deferred column load could screw up the connection status in
a flush() under some circumstances, this was fixed
Diffstat (limited to 'lib/sqlalchemy/engine/base.py')
-rw-r--r-- | lib/sqlalchemy/engine/base.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index 85e68825f..048c24009 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -231,11 +231,15 @@ class Connection(Connectable): self.__connection = None del self.__connection def scalar(self, object, parameters=None, **kwargs): - row = self.execute(object, parameters, **kwargs).fetchone() - if row is not None: - return row[0] - else: - return None + result = self.execute(object, parameters, **kwargs) + row = result.fetchone() + try: + if row is not None: + return row[0] + else: + return None + finally: + result.close() def execute(self, object, *multiparams, **params): return Connection.executors[type(object).__mro__[-2]](self, object, *multiparams, **params) def execute_default(self, default, **kwargs): |