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.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py
index e696950b9..7fcf52af6 100644
--- a/lib/sqlalchemy/engine/base.py
+++ b/lib/sqlalchemy/engine/base.py
@@ -113,6 +113,9 @@ class Dialect(sql.AbstractDialect):
raise NotImplementedError()
def do_execute(self, cursor, statement, parameters):
raise NotImplementedError()
+ def create_cursor(self, connection):
+ """return a new cursor generated from the given connection"""
+ raise NotImplementedError()
def compile(self, clauseelement, parameters=None):
"""compile the given ClauseElement using this Dialect.
@@ -279,7 +282,7 @@ class Connection(Connectable):
return self.execute_compiled(elem.compile(engine=self.__engine, parameters=param), *multiparams, **params)
def execute_compiled(self, compiled, *multiparams, **params):
"""executes a sql.Compiled object."""
- cursor = self.connection.cursor()
+ cursor = self.__engine.dialect.create_cursor(self.connection)
parameters = [compiled.get_params(**m) for m in self._params_to_listofdicts(*multiparams, **params)]
if len(parameters) == 1:
parameters = parameters[0]
@@ -319,7 +322,7 @@ class Connection(Connectable):
return callable_(self)
def _execute_raw(self, statement, parameters=None, cursor=None, context=None, **kwargs):
if cursor is None:
- cursor = self.connection.cursor()
+ cursor = self.__engine.dialect.create_cursor(self.connection)
try:
self.__engine.logger.info(statement)
self.__engine.logger.info(repr(parameters))