summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/dialects')
-rw-r--r--lib/sqlalchemy/dialects/mssql/base.py4
-rw-r--r--lib/sqlalchemy/dialects/oracle/cx_oracle.py31
2 files changed, 10 insertions, 25 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py
index dda445743..5618a67f9 100644
--- a/lib/sqlalchemy/dialects/mssql/base.py
+++ b/lib/sqlalchemy/dialects/mssql/base.py
@@ -704,9 +704,9 @@ from ... import schema as sa_schema
from ... import sql
from ... import types as sqltypes
from ... import util
+from ...engine import cursor as _cursor
from ...engine import default
from ...engine import reflection
-from ...engine import result as _result
from ...sql import compiler
from ...sql import elements
from ...sql import expression
@@ -1525,7 +1525,7 @@ class MSExecutionContext(default.DefaultExecutionContext):
elif (
self.isinsert or self.isupdate or self.isdelete
) and self.compiled.returning:
- fbcr = _result.FullyBufferedCursorFetchStrategy
+ fbcr = _cursor.FullyBufferedCursorFetchStrategy
self._result_strategy = fbcr.create_from_buffer(
self.cursor, self.cursor.description, self.cursor.fetchall()
)
diff --git a/lib/sqlalchemy/dialects/oracle/cx_oracle.py b/lib/sqlalchemy/dialects/oracle/cx_oracle.py
index b555c4555..9e10679c6 100644
--- a/lib/sqlalchemy/dialects/oracle/cx_oracle.py
+++ b/lib/sqlalchemy/dialects/oracle/cx_oracle.py
@@ -299,7 +299,6 @@ SQLAlchemy type (or a subclass of such).
from __future__ import absolute_import
-import collections
import decimal
import random
import re
@@ -312,7 +311,7 @@ from ... import exc
from ... import processors
from ... import types as sqltypes
from ... import util
-from ...engine import result as _result
+from ...engine import cursor as _cursor
from ...util import compat
@@ -680,8 +679,13 @@ class OracleExecutionContext_cx_oracle(OracleExecutionContext):
for i in range(len(self.out_parameters))
]
- return ReturningResultStrategy(
- result, result.cursor, returning_params
+ return _cursor.FullyBufferedCursorFetchStrategy(
+ result.cursor,
+ [
+ (getattr(col, "name", col.anon_label), None)
+ for col in result.context.compiled.returning
+ ],
+ initial_buffer=[tuple(returning_params)],
)
else:
return super(
@@ -689,25 +693,6 @@ class OracleExecutionContext_cx_oracle(OracleExecutionContext):
).get_result_cursor_strategy(result)
-class ReturningResultStrategy(_result.FullyBufferedCursorFetchStrategy):
- __slots__ = ("_returning_params",)
-
- def __init__(self, result, dbapi_cursor, returning_params):
- self._returning_params = returning_params
-
- returning = result.context.compiled.returning
- cursor_description = [
- (getattr(col, "name", col.anon_label), None) for col in returning
- ]
-
- super(ReturningResultStrategy, self).__init__(
- dbapi_cursor, cursor_description
- )
-
- def _buffer_rows(self):
- return collections.deque([tuple(self._returning_params)])
-
-
class OracleDialect_cx_oracle(OracleDialect):
execution_ctx_cls = OracleExecutionContext_cx_oracle
statement_compiler = OracleCompiler_cx_oracle