From 516dd178bf2feb5ad1d04993fa65d1a5a8f476ed Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 6 Nov 2009 15:51:06 +0000 Subject: [PATCH] allow setattr() access to _CursorFairy directly, thereby removing the need for dialects to guess whether they have a wrapped cursor or not, fixes #1609, regression from r6471 --- lib/sqlalchemy/dialects/oracle/cx_oracle.py | 2 +- lib/sqlalchemy/pool.py | 14 ++++++++++---- test/dialect/test_oracle.py | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/sqlalchemy/dialects/oracle/cx_oracle.py b/lib/sqlalchemy/dialects/oracle/cx_oracle.py index b6f16792e6..eb5f2cb43b 100644 --- a/lib/sqlalchemy/dialects/oracle/cx_oracle.py +++ b/lib/sqlalchemy/dialects/oracle/cx_oracle.py @@ -234,7 +234,7 @@ class Oracle_cx_oracleExecutionContext(OracleExecutionContext): def create_cursor(self): c = self._connection.connection.cursor() if self.dialect.arraysize: - c.cursor.arraysize = self.dialect.arraysize + c.arraysize = self.dialect.arraysize return c def get_result_proxy(self): diff --git a/lib/sqlalchemy/pool.py b/lib/sqlalchemy/pool.py index 45ff89d711..0dd3438b10 100644 --- a/lib/sqlalchemy/pool.py +++ b/lib/sqlalchemy/pool.py @@ -431,15 +431,15 @@ class _ConnectionFairy(object): self._connection_record = None class _CursorFairy(object): - __slots__ = '__parent', 'cursor', 'execute' + __slots__ = '_parent', 'cursor', 'execute' def __init__(self, parent, cursor): - self.__parent = parent + self._parent = parent self.cursor = cursor self.execute = cursor.execute def invalidate(self, e=None): - self.__parent.invalidate(e=e) + self._parent.invalidate(e=e) def close(self): try: @@ -453,7 +453,13 @@ class _CursorFairy(object): if isinstance(e, (SystemExit, KeyboardInterrupt)): raise - + + def __setattr__(self, key, value): + if key in self.__slots__: + object.__setattr__(self, key, value) + else: + setattr(self.cursor, key, value) + def __getattr__(self, key): return getattr(self.cursor, key) diff --git a/test/dialect/test_oracle.py b/test/dialect/test_oracle.py index b572092957..57be6fe618 100644 --- a/test/dialect/test_oracle.py +++ b/test/dialect/test_oracle.py @@ -243,7 +243,7 @@ class MultiSchemaTest(TestBase, AssertsCompiledSQL): __only_on__ = 'oracle' def test_create_same_names_explicit_schema(self): - schema = testing.db.dialect.get_default_schema_name(testing.db.connect()) + schema = testing.db.dialect.default_schema_name meta = MetaData(testing.db) parent = Table('parent', meta, Column('pid', Integer, primary_key=True), -- 2.47.3