summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2009-11-06 15:51:06 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2009-11-06 15:51:06 +0000
commit516dd178bf2feb5ad1d04993fa65d1a5a8f476ed (patch)
tree0b0073a0375ec1f99e00c7261053fe063bb7320d
parent8f4373104f0104886423bf0ecdf4d71239bb998e (diff)
downloadsqlalchemy-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.py2
-rw-r--r--lib/sqlalchemy/pool.py14
-rw-r--r--test/dialect/test_oracle.py2
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),