summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/engine/base.py')
-rw-r--r--lib/sqlalchemy/engine/base.py88
1 files changed, 56 insertions, 32 deletions
diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py
index 267249971..77aa950c0 100644
--- a/lib/sqlalchemy/engine/base.py
+++ b/lib/sqlalchemy/engine/base.py
@@ -1228,63 +1228,100 @@ class Connection(Connectable):
return [multiparams]
def _execute_function(self, func, multiparams, params):
+ """Execute a sql.FunctionElement object."""
+
return self._execute_clauseelement(func.select(), multiparams, params)
def _execute_default(self, default, multiparams, params):
- ctx = self.__create_execution_context()
+ """Execute a schema.ColumnDefault object."""
+
+ try:
+ dialect = self.engine.dialect
+ ctx = dialect.execution_ctx_cls._init_default(
+ dialect, self)
+ except Exception, e:
+ self._handle_dbapi_exception(e, None, None, None, None)
+ raise
+
ret = ctx._exec_default(default)
if self.should_close_with_result:
self.close()
return ret
def _execute_ddl(self, ddl, params, multiparams):
- context = self.__create_execution_context(
- compiled_ddl=ddl.compile(dialect=self.dialect),
- parameters=None
- )
+ """Execute a schema.DDL object."""
+
+ try:
+ dialect = self.engine.dialect
+ context = dialect.execution_ctx_cls.\
+ _init_ddl(
+ dialect,
+ self,
+ ddl.compile(dialect=self.dialect))
+ except Exception, e:
+ self._handle_dbapi_exception(e, None, None, None, None)
+ raise
return self.__execute_context(context)
def _execute_clauseelement(self, elem, multiparams, params):
+ """Execute a sql.ClauseElement object."""
+
params = self.__distill_params(multiparams, params)
if params:
keys = params[0].keys()
else:
keys = []
+ dialect = self.engine.dialect
if 'compiled_cache' in self._execution_options:
- key = self.dialect, elem, tuple(keys), len(params) > 1
+ key = dialect, elem, tuple(keys), len(params) > 1
if key in self._execution_options['compiled_cache']:
compiled_sql = self._execution_options['compiled_cache'][key]
else:
compiled_sql = elem.compile(
- dialect=self.dialect, column_keys=keys,
+ dialect=dialect, column_keys=keys,
inline=len(params) > 1)
self._execution_options['compiled_cache'][key] = compiled_sql
else:
compiled_sql = elem.compile(
- dialect=self.dialect, column_keys=keys,
+ dialect=dialect, column_keys=keys,
inline=len(params) > 1)
- context = self.__create_execution_context(
- compiled_sql=compiled_sql,
- parameters=params
- )
+ try:
+ context = dialect.execution_ctx_cls.\
+ _init_compiled(dialect, self, compiled_sql, params)
+ except Exception, e:
+ self._handle_dbapi_exception(e, None, params, None, None)
+ raise
return self.__execute_context(context)
def _execute_compiled(self, compiled, multiparams, params):
"""Execute a sql.Compiled object."""
- context = self.__create_execution_context(
- compiled_sql=compiled,
- parameters=self.__distill_params(multiparams, params)
- )
+ try:
+ dialect = self.engine.dialect
+ parameters=self.__distill_params(multiparams, params)
+ context = dialect.execution_ctx_cls.\
+ _init_compiled(dialect, self,
+ compiled, parameters)
+ except Exception, e:
+ self._handle_dbapi_exception(e, None, parameters, None, None)
+ raise
return self.__execute_context(context)
def _execute_text(self, statement, multiparams, params):
+ """Execute a string SQL statement."""
+
parameters = self.__distill_params(multiparams, params)
- context = self.__create_execution_context(
- statement=statement,
- parameters=parameters)
+ try:
+ dialect = self.engine.dialect
+ context = dialect.execution_ctx_cls.\
+ _init_statement(dialect, self,
+ statement, parameters)
+ except Exception, e:
+ self._handle_dbapi_exception(e, statement, parameters,
+ None, None)
+ raise
return self.__execute_context(context)
def __execute_context(self, context):
@@ -1387,19 +1424,6 @@ class Connection(Connectable):
finally:
del self._reentrant_error
- def __create_execution_context(self, **kwargs):
- try:
- dialect = self.engine.dialect
- return dialect.execution_ctx_cls(
- dialect,
- connection=self, **kwargs)
- except Exception, e:
- self._handle_dbapi_exception(e,
- kwargs.get('statement', None),
- kwargs.get('parameters', None),
- None, None)
- raise
-
def _cursor_execute(self, cursor, statement, parameters, context=None):
if self._echo:
self.engine.logger.info(statement)