MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_external_columns

Method test_external_columns

test/orm/test_froms.py:3660–3817  ·  view source on GitHub ↗

test querying mappings that reference external columns or selectables.

(self)

Source from the content-addressed store, hash-verified

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 ]

Callers

nothing calls this directly

Calls 15

column_propertyFunction · 0.90
selectFunction · 0.90
relationshipFunction · 0.90
fixture_sessionFunction · 0.90
joinedloadFunction · 0.90
eq_Function · 0.90
aliasedFunction · 0.90
map_imperativelyMethod · 0.80
assert_sql_countMethod · 0.80
with_entitiesMethod · 0.80
UserClass · 0.70
AddressClass · 0.70

Tested by

no test coverage detected