diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-01-10 07:49:37 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-01-10 07:49:37 +0000 |
commit | ba3ebe44dec08fa74363d63a19ddc2b2782f3350 (patch) | |
tree | 4e1d56c053ae4d15454988af28439165a85f3ad6 /lib/sqlalchemy/engine/base.py | |
parent | cd2fe94b148110c105f1ff206a414af5097fa895 (diff) | |
download | sqlalchemy-ba3ebe44dec08fa74363d63a19ddc2b2782f3350.tar.gz |
- postgres no longer uses client-side cursors, uses more efficient server side
cursors via apparently undocumented psycopg2 behavior recently discovered on the
mailing list. disable it via create_engine('postgres://', client_side_cursors=True)
Diffstat (limited to 'lib/sqlalchemy/engine/base.py')
-rw-r--r-- | lib/sqlalchemy/engine/base.py | 7 |
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)) |