diff options
Diffstat (limited to 'lib/sqlalchemy/orm/session.py')
-rw-r--r-- | lib/sqlalchemy/orm/session.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index 788821b98..ec6f41b28 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -35,6 +35,7 @@ import weakref from . import attributes from . import context +from . import descriptor_props from . import exc from . import identity from . import loading @@ -3193,8 +3194,15 @@ class Session(_SessionClassMethods, EventTarget): ) -> Optional[_O]: # convert composite types to individual args - if is_composite_class(primary_key_identity): - primary_key_identity = primary_key_identity.__composite_values__() + if ( + is_composite_class(primary_key_identity) + and type(primary_key_identity) + in descriptor_props._composite_getters + ): + getter = descriptor_props._composite_getters[ + type(primary_key_identity) + ] + primary_key_identity = getter(primary_key_identity) mapper: Optional[Mapper[_O]] = inspect(entity) |