test querying mappings that reference external columns or selectables.
(self)
| 3658 | clear_mappers() |
| 3659 | |
| 3660 | def test_external_columns(self): |
| 3661 | """test querying mappings that reference external columns or |
| 3662 | selectables.""" |
| 3663 | |
| 3664 | users, Address, addresses, User = ( |
| 3665 | self.tables.users, |
| 3666 | self.classes.Address, |
| 3667 | self.tables.addresses, |
| 3668 | self.classes.User, |
| 3669 | ) |
| 3670 | |
| 3671 | self.mapper_registry.map_imperatively( |
| 3672 | User, |
| 3673 | users, |
| 3674 | properties={ |
| 3675 | "concat": column_property(users.c.id * 2), |
| 3676 | "count": column_property( |
| 3677 | select(func.count(addresses.c.id)) |
| 3678 | .where( |
| 3679 | users.c.id == addresses.c.user_id, |
| 3680 | ) |
| 3681 | .correlate(users) |
| 3682 | .scalar_subquery() |
| 3683 | ), |
| 3684 | }, |
| 3685 | ) |
| 3686 | |
| 3687 | self.mapper_registry.map_imperatively( |
| 3688 | Address, |
| 3689 | addresses, |
| 3690 | properties={ |
| 3691 | "user": relationship( |
| 3692 | User, |
| 3693 | ) |
| 3694 | }, |
| 3695 | ) |
| 3696 | |
| 3697 | sess = fixture_session() |
| 3698 | |
| 3699 | sess.query(Address).options(joinedload(Address.user)).all() |
| 3700 | |
| 3701 | eq_( |
| 3702 | sess.query(User).all(), |
| 3703 | [ |
| 3704 | User(id=7, concat=14, count=1), |
| 3705 | User(id=8, concat=16, count=3), |
| 3706 | User(id=9, concat=18, count=1), |
| 3707 | User(id=10, concat=20, count=0), |
| 3708 | ], |
| 3709 | ) |
| 3710 | |
| 3711 | address_result = [ |
| 3712 | Address(id=1, user=User(id=7, concat=14, count=1)), |
| 3713 | Address(id=2, user=User(id=8, concat=16, count=3)), |
| 3714 | Address(id=3, user=User(id=8, concat=16, count=3)), |
| 3715 | Address(id=4, user=User(id=8, concat=16, count=3)), |
| 3716 | Address(id=5, user=User(id=9, concat=18, count=1)), |
| 3717 | ] |
nothing calls this directly
no test coverage detected