summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine/cursor.py
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2021-05-05 14:05:11 +0000
committerGerrit Code Review <gerrit@ci3.zzzcomputing.com>2021-05-05 14:05:11 +0000
commit900d76b8f757a8a42bfb8fc737d24a94eeeac05f (patch)
tree2580a237c40d91f9c7fd9e7d253cd01920a767e8 /lib/sqlalchemy/engine/cursor.py
parenta0c0e2401d9b738cb51f67b9bc29a8b9a2f2a914 (diff)
parentd6ec248fa7083fee93b669ab27474f6c8f69944d (diff)
downloadsqlalchemy-900d76b8f757a8a42bfb8fc737d24a94eeeac05f.tar.gz
Merge "Establish deprecation path for CursorResult.keys()"
Diffstat (limited to 'lib/sqlalchemy/engine/cursor.py')
-rw-r--r--lib/sqlalchemy/engine/cursor.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/lib/sqlalchemy/engine/cursor.py b/lib/sqlalchemy/engine/cursor.py
index ff9dd0d6a..cf77d0835 100644
--- a/lib/sqlalchemy/engine/cursor.py
+++ b/lib/sqlalchemy/engine/cursor.py
@@ -1201,7 +1201,19 @@ class _NoResultMetaData(ResultMetaData):
self._we_dont_return_rows()
+class _LegacyNoResultMetaData(_NoResultMetaData):
+ @property
+ def keys(self):
+ util.warn_deprecated_20(
+ "Calling the .keys() method on a result set that does not return "
+ "rows is deprecated and will raise ResourceClosedError in "
+ "SQLAlchemy 2.0.",
+ )
+ return []
+
+
_NO_RESULT_METADATA = _NoResultMetaData()
+_LEGACY_NO_RESULT_METADATA = _LegacyNoResultMetaData()
class BaseCursorResult(object):
@@ -1259,7 +1271,7 @@ class BaseCursorResult(object):
self._set_memoized_attribute("_row_getter", make_row)
else:
- self._metadata = _NO_RESULT_METADATA
+ self._metadata = self._no_result_metadata
def _init_metadata(self, context, cursor_description):
@@ -1763,6 +1775,7 @@ class CursorResult(BaseCursorResult, Result):
_cursor_metadata = CursorResultMetaData
_cursor_strategy_cls = CursorFetchStrategy
+ _no_result_metadata = _NO_RESULT_METADATA
def _fetchiter_impl(self):
fetchone = self.cursor_strategy.fetchone
@@ -1838,6 +1851,8 @@ class LegacyCursorResult(CursorResult):
_cursor_metadata = LegacyCursorResultMetaData
_cursor_strategy_cls = CursorFetchStrategy
+ _no_result_metadata = _LEGACY_NO_RESULT_METADATA
+
def close(self):
"""Close this :class:`_engine.LegacyCursorResult`.