diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2009-11-06 15:51:06 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2009-11-06 15:51:06 +0000 |
commit | 516dd178bf2feb5ad1d04993fa65d1a5a8f476ed (patch) | |
tree | 0b0073a0375ec1f99e00c7261053fe063bb7320d | |
parent | 8f4373104f0104886423bf0ecdf4d71239bb998e (diff) | |
download | sqlalchemy-516dd178bf2feb5ad1d04993fa65d1a5a8f476ed.tar.gz |
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
-rw-r--r-- | lib/sqlalchemy/dialects/oracle/cx_oracle.py | 2 | ||||
-rw-r--r-- | lib/sqlalchemy/pool.py | 14 | ||||
-rw-r--r-- | 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 b6f16792e..eb5f2cb43 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 45ff89d71..0dd3438b1 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 b57209295..57be6fe61 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), |