summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine/default.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/engine/default.py')
-rw-r--r--lib/sqlalchemy/engine/default.py34
1 files changed, 23 insertions, 11 deletions
diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py
index a91d65b81..19ab22c9e 100644
--- a/lib/sqlalchemy/engine/default.py
+++ b/lib/sqlalchemy/engine/default.py
@@ -146,9 +146,8 @@ class DefaultExecutionContext(base.ExecutionContext):
if value is not None
])
- self.typemap = compiled.typemap
- self.column_labels = compiled.column_labels
-
+ self.result_map = compiled.result_map
+
if not dialect.supports_unicode_statements:
self.statement = unicode(compiled).encode(self.dialect.encoding)
else:
@@ -156,6 +155,12 @@ class DefaultExecutionContext(base.ExecutionContext):
self.isinsert = compiled.isinsert
self.isupdate = compiled.isupdate
+ if isinstance(compiled.statement, expression._TextClause):
+ self.returns_rows = self.returns_rows_text(self.statement)
+ self.should_autocommit = self.should_autocommit_text(self.statement)
+ else:
+ self.returns_rows = self.returns_rows_compiled(compiled)
+ self.should_autocommit = self.should_autocommit_compiled(compiled)
if not parameters:
self.compiled_parameters = [compiled.construct_params()]
@@ -170,7 +175,7 @@ class DefaultExecutionContext(base.ExecutionContext):
elif statement is not None:
# plain text statement.
- self.typemap = self.column_labels = None
+ self.result_map = None
self.parameters = self.__encode_param_keys(parameters)
self.executemany = len(parameters) > 1
if not dialect.supports_unicode_statements:
@@ -179,10 +184,12 @@ class DefaultExecutionContext(base.ExecutionContext):
self.statement = statement
self.isinsert = self.isupdate = False
self.cursor = self.create_cursor()
+ self.returns_rows = self.returns_rows_text(statement)
+ self.should_autocommit = self.should_autocommit_text(statement)
else:
# no statement. used for standalone ColumnDefault execution.
self.statement = None
- self.isinsert = self.isupdate = self.executemany = False
+ self.isinsert = self.isupdate = self.executemany = self.returns_rows = self.should_autocommit = False
self.cursor = self.create_cursor()
connection = property(lambda s:s._connection._branch())
@@ -244,10 +251,18 @@ class DefaultExecutionContext(base.ExecutionContext):
parameters.append(param)
return parameters
- def is_select(self):
- """return TRUE if the statement is expected to have result rows."""
+ def returns_rows_compiled(self, compiled):
+ return isinstance(compiled.statement, expression.Selectable)
- return SELECT_REGEXP.match(self.statement)
+ def returns_rows_text(self, statement):
+ return SELECT_REGEXP.match(statement)
+
+ def should_autocommit_compiled(self, compiled):
+ return isinstance(compiled.statement, expression._UpdateBase)
+
+ def should_autocommit_text(self, statement):
+ return AUTOCOMMIT_REGEXP.match(statement)
+
def create_cursor(self):
return self._connection.connection.cursor()
@@ -261,9 +276,6 @@ class DefaultExecutionContext(base.ExecutionContext):
def result(self):
return self.get_result_proxy()
- def should_autocommit(self):
- return AUTOCOMMIT_REGEXP.match(self.statement)
-
def pre_exec(self):
pass