diff options
Diffstat (limited to 'lib/sqlalchemy/ext')
| -rw-r--r-- | lib/sqlalchemy/ext/asyncio/result.py | 9 | ||||
| -rw-r--r-- | lib/sqlalchemy/ext/horizontal_shard.py | 8 |
2 files changed, 14 insertions, 3 deletions
diff --git a/lib/sqlalchemy/ext/asyncio/result.py b/lib/sqlalchemy/ext/asyncio/result.py index 2fdaec741..dff87a569 100644 --- a/lib/sqlalchemy/ext/asyncio/result.py +++ b/lib/sqlalchemy/ext/asyncio/result.py @@ -29,6 +29,15 @@ class AsyncResult(AsyncCommon): :meth:`_asyncio.AsyncConnection.stream` and :meth:`_asyncio.AsyncSession.stream` methods. + .. note:: As is the case with :class:`_engine.Result`, this object is + used for ORM results returned by :meth:`_asyncio.AsyncSession.execute`, + which can yield instances of ORM mapped objects either individually or + within tuple-like rows. Note that these result objects do not + deduplicate instances or rows automatically as is the case with the + legacy :class:`_orm.Query` object. For in-Python de-duplication of + instances or rows, use the :meth:`_asyncio.AsyncResult.unique` modifier + method. + .. versionadded:: 1.4 """ diff --git a/lib/sqlalchemy/ext/horizontal_shard.py b/lib/sqlalchemy/ext/horizontal_shard.py index 8fb3bf282..5f13ad268 100644 --- a/lib/sqlalchemy/ext/horizontal_shard.py +++ b/lib/sqlalchemy/ext/horizontal_shard.py @@ -211,9 +211,11 @@ def execute_and_instances(orm_context): load_options = active_options = orm_context.load_options update_options = None - else: + elif orm_context.is_update or orm_context.is_delete: load_options = None update_options = active_options = orm_context.update_delete_options + else: + load_options = update_options = active_options = None session = orm_context.session @@ -226,7 +228,7 @@ def execute_and_instances(orm_context): if orm_context.is_select: load_options += {"_refresh_identity_token": shard_id} execution_options["_sa_orm_load_options"] = load_options - else: + elif orm_context.is_update or orm_context.is_delete: update_options += {"_refresh_identity_token": shard_id} execution_options["_sa_orm_update_options"] = update_options @@ -234,7 +236,7 @@ def execute_and_instances(orm_context): bind_arguments=bind_arguments, execution_options=execution_options ) - if active_options._refresh_identity_token is not None: + if active_options and active_options._refresh_identity_token is not None: shard_id = active_options._refresh_identity_token elif "_sa_shard_id" in orm_context.execution_options: shard_id = orm_context.execution_options["_sa_shard_id"] |
