From 90d4cdbac80f0f87f365efdf9b596eff77764bed Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 16 Sep 2010 11:29:01 -0400 Subject: - Fixed a regression in 0.6.4 whereby the change that allowed cursor errors to be raised consistently broke the result.lastrowid accessor. Test coverage has been added for result.lastrowid. Note that lastrowid is only supported by Pysqlite and some MySQL drivers, so isn't super-useful in the general case. --- lib/sqlalchemy/engine/base.py | 6 +++--- lib/sqlalchemy/test/requires.py | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'lib/sqlalchemy') diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index 79cadaea9..4d6912ce4 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -2249,7 +2249,7 @@ class ResultProxy(object): self.context = context self.dialect = context.dialect self.closed = False - self.cursor = context.cursor + self.cursor = self._saved_cursor = context.cursor self.connection = context.root_connection self._echo = self.connection._echo and \ context.engine._should_log_debug() @@ -2304,12 +2304,12 @@ class ResultProxy(object): regardless of database backend. """ - return self.cursor.lastrowid + return self._saved_cursor.lastrowid def _cursor_description(self): """May be overridden by subclasses.""" - return self.cursor.description + return self._saved_cursor.description def _autoclose(self): """called by the Connection to autoclose cursors that have no pending diff --git a/lib/sqlalchemy/test/requires.py b/lib/sqlalchemy/test/requires.py index 501f0e24d..dc0b29228 100644 --- a/lib/sqlalchemy/test/requires.py +++ b/lib/sqlalchemy/test/requires.py @@ -247,6 +247,12 @@ def sane_rowcount(fn): skip_if(lambda: not testing.db.dialect.supports_sane_rowcount) ) +def dbapi_lastrowid(fn): + return _chain_decorators_on( + fn, + fails_on_everything_except('mysql+mysqldb', 'sqlite+pysqlite') + ) + def sane_multi_rowcount(fn): return _chain_decorators_on( fn, -- cgit v1.2.1