diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-12 16:19:41 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-12 16:19:41 -0500 |
commit | 6efad7dfc6da0d54bb89809b12bacdf62d0169fd (patch) | |
tree | 71350bf1eed227f9ebd20ed33eab3387acc909c6 /lib | |
parent | b9d275fdc134376b3e81066870b92a8c84c0705c (diff) | |
download | sqlalchemy-6efad7dfc6da0d54bb89809b12bacdf62d0169fd.tar.gz |
oursql doesn't like the cursor being reused without fetch being finished
Diffstat (limited to 'lib')
-rw-r--r-- | lib/sqlalchemy/engine/default.py | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index cfab01dc4..8222c93cd 100644 --- a/lib/sqlalchemy/engine/default.py +++ b/lib/sqlalchemy/engine/default.py @@ -137,7 +137,6 @@ class DefaultDialect(base.Dialect): self.returns_unicode_strings = self._check_unicode_returns(connection) def _check_unicode_returns(self, connection): - cursor = connection.connection.cursor() # Py2K if self.supports_unicode_statements: cast_to = unicode @@ -147,24 +146,27 @@ class DefaultDialect(base.Dialect): # Py3K #cast_to = str def check_unicode(type_): - cursor.execute( - cast_to( - expression.select( - [expression.cast( - expression.literal_column("'test unicode returns'"), type_) - ]).compile(dialect=self) + cursor = connection.connection.cursor() + try: + cursor.execute( + cast_to( + expression.select( + [expression.cast( + expression.literal_column("'test unicode returns'"), type_) + ]).compile(dialect=self) + ) ) - ) - - row = cursor.fetchone() - return isinstance(row[0], unicode) - + row = cursor.fetchone() + + return isinstance(row[0], unicode) + finally: + cursor.close() + # detect plain VARCHAR unicode_for_varchar = check_unicode(sqltypes.VARCHAR(60)) # detect if there's an NVARCHAR type with different behavior available unicode_for_unicode = check_unicode(sqltypes.Unicode(60)) - cursor.close() if unicode_for_unicode and not unicode_for_varchar: return "conditional" |