diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-02-28 20:12:43 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-02-28 20:12:43 +0000 |
commit | ac1f58795ad49d643ff2993245d7cf458a4caf5b (patch) | |
tree | c6d3b4dc98f1c2b9d3c0b5ff7f10d74bf7f8cd59 /lib/sqlalchemy/engine/default.py | |
parent | ba015e62cc1c688b11a7b8f916867f123a6fe206 (diff) | |
download | sqlalchemy-ac1f58795ad49d643ff2993245d7cf458a4caf5b.tar.gz |
- simplify the OurSQL dialect regarding py3k, this version gives it a fairly
fighting chance on python 3. there's an oursql bug where it can't raise
an exception on executemany() correctly.
- needed to add "plain_query" wrappers for all the reflection methods. not sure
why this was not needed earlier.
Diffstat (limited to 'lib/sqlalchemy/engine/default.py')
-rw-r--r-- | lib/sqlalchemy/engine/default.py | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index ac933bdf4..4d4fd7c71 100644 --- a/lib/sqlalchemy/engine/default.py +++ b/lib/sqlalchemy/engine/default.py @@ -115,12 +115,6 @@ class DefaultDialect(base.Dialect): if not hasattr(self, 'description_encoding'): self.description_encoding = getattr(self, 'description_encoding', encoding) - - # Py3K - ## work around dialects that might change these values - #self.supports_unicode_statements = True - #self.supports_unicode_binds = True - #self.returns_unicode_strings = True @property def dialect_description(self): @@ -136,9 +130,7 @@ class DefaultDialect(base.Dialect): except NotImplementedError: self.default_schema_name = None - # Py2K self.returns_unicode_strings = self._check_unicode_returns(connection) - # end Py2K def _check_unicode_returns(self, connection): cursor = connection.connection.cursor() @@ -268,9 +260,10 @@ class DefaultExecutionContext(base.ExecutionContext): ) if not dialect.supports_unicode_statements: - self.statement = unicode(compiled).encode(self.dialect.encoding) + self.unicode_statement = unicode(compiled) + self.statement = self.unicode_statement.encode(self.dialect.encoding) else: - self.statement = unicode(compiled) + self.statement = self.unicode_statement = unicode(compiled) self.cursor = self.create_cursor() self.compiled_parameters = [] @@ -302,9 +295,10 @@ class DefaultExecutionContext(base.ExecutionContext): self.result_map = compiled.result_map if not dialect.supports_unicode_statements: - self.statement = unicode(compiled).encode(self.dialect.encoding) + self.unicode_statement = unicode(compiled) + self.statement = self.unicode_statement.encode(self.dialect.encoding) else: - self.statement = unicode(compiled) + self.statement = self.unicode_statement = unicode(compiled) self.isinsert = compiled.isinsert self.isupdate = compiled.isupdate @@ -322,16 +316,20 @@ class DefaultExecutionContext(base.ExecutionContext): if self.isinsert or self.isupdate: self.__process_defaults() self.parameters = self.__convert_compiled_params(self.compiled_parameters) + elif statement is not None: # plain text statement if connection._execution_options: self.execution_options = self.execution_options.union(connection._execution_options) self.parameters = self.__encode_param_keys(parameters) self.executemany = len(parameters) > 1 + if isinstance(statement, unicode) and not dialect.supports_unicode_statements: + self.unicode_statement = statement self.statement = statement.encode(self.dialect.encoding) else: - self.statement = statement + self.statement = self.unicode_statement = statement + self.cursor = self.create_cursor() else: # no statement. used for standalone ColumnDefault execution. @@ -349,7 +347,7 @@ class DefaultExecutionContext(base.ExecutionContext): or False) if autocommit is expression.PARSE_AUTOCOMMIT: - return self.should_autocommit_text(self.statement) + return self.should_autocommit_text(self.unicode_statement) else: return autocommit @@ -374,7 +372,8 @@ class DefaultExecutionContext(base.ExecutionContext): def _execute_scalar(self, stmt): """Execute a string statement on the current cursor, returning a scalar result. - Used to fire off sequences, default phrases, and "select lastrowid" types of statements individually + Used to fire off sequences, default phrases, and "select lastrowid" + types of statements individually or in the context of a parent INSERT or UPDATE statement. """ |