summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine/base.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-07-14 21:02:35 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-07-14 21:02:35 +0000
commitd4c60a64a62e5c2542a27918e6d3c9fc26875736 (patch)
treeec997c16e8a0912dc4f1b64bf8799bd9f7d45fe1 /lib/sqlalchemy/engine/base.py
parentbc6fbfa84ab6e1e9639e00cc23b3c41ab1d30dc1 (diff)
downloadsqlalchemy-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.py14
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):