def test_composite_column_mapped_collection(self): users, addresses = self.tables.users, self.tables.addresses mapper( User, users, properties={ "addresses": relationship( Address, collection_class=column_mapped_collection( [addresses.c.id, addresses.c.email_address] ), ) }, ) mapper(Address, addresses) u1 = User() u1.addresses = { (1, "email1"): Address(id=1, email_address="email1"), (2, "email2"): Address(id=2, email_address="email2"), } for loads, dumps in picklers(): repickled = loads(dumps(u1)) eq_(u1.addresses, repickled.addresses) eq_( repickled.addresses[(1, "email1")], Address(id=1, email_address="email1"), )
def test_column_mapped_collection(self): users, addresses = self.tables.users, self.tables.addresses mapper( User, users, properties={ "addresses": relationship( Address, collection_class=column_mapped_collection( addresses.c.email_address ), ) }, ) mapper(Address, addresses) u1 = User() u1.addresses = { "email1": Address(email_address="email1"), "email2": Address(email_address="email2"), } for loads, dumps in picklers(): repickled = loads(dumps(u1)) eq_(u1.addresses, repickled.addresses) eq_(repickled.addresses["email1"], Address(email_address="email1"))
def test_attribute_mapped_collection(self): users, addresses = self.tables.users, self.tables.addresses mapper(User, users, properties={ 'addresses': relationship( Address, collection_class=attribute_mapped_collection('email_address') ) }) mapper(Address, addresses) u1 = User() u1.addresses = {"email1": Address(email_address="email1")} for loads, dumps in picklers(): repickled = loads(dumps(u1)) eq_(u1.addresses, repickled.addresses) eq_(repickled.addresses['email1'], Address(email_address="email1"))
def test_attribute_mapped_collection(self): users, addresses = self.tables.users, self.tables.addresses mapper(User, users, properties={ 'addresses': relationship(Address, collection_class=attribute_mapped_collection( 'email_address')) }) mapper(Address, addresses) u1 = User() u1.addresses = {"email1": Address(email_address="email1")} for loads, dumps in picklers(): repickled = loads(dumps(u1)) eq_(u1.addresses, repickled.addresses) eq_(repickled.addresses['email1'], Address(email_address="email1"))
def test_loader_criteria(self, pickle_it, use_mixin): """test #8109""" users, addresses = (self.tables.users, self.tables.addresses) AddressCls = AddressWMixin if use_mixin else Address self.mapper_registry.map_imperatively( User, users, properties={"addresses": relationship(AddressCls)}, ) self.mapper_registry.map_imperatively(AddressCls, addresses) with fixture_session(expire_on_commit=False) as sess: u1 = User(name="ed") u1.addresses = [ AddressCls(email_address="*****@*****.**"), AddressCls(email_address="*****@*****.**"), ] sess.add(u1) sess.commit() with fixture_session(expire_on_commit=False) as sess: # note that non-lambda is not picklable right now as # SQL expressions usually can't be pickled. opt = with_loader_criteria( Mixin if use_mixin else Address, no_ed_foo, include_aliases=True, ) u1 = sess.query(User).options(opt).first() if pickle_it: u1 = pickle.loads(pickle.dumps(u1)) sess.close() sess.add(u1) eq_([ad.email_address for ad in u1.addresses], ["*****@*****.**"])
def test_attribute_mapped_collection(self): users, addresses = self.tables.users, self.tables.addresses self.mapper_registry.map_imperatively( User, users, properties={ "addresses": relationship( Address, collection_class=attribute_mapped_collection( "email_address"), ) }, ) self.mapper_registry.map_imperatively(Address, addresses) u1 = User() u1.addresses = {"email1": Address(email_address="email1")} for loads, dumps in picklers(): repickled = loads(dumps(u1)) eq_(u1.addresses, repickled.addresses) eq_(repickled.addresses["email1"], Address(email_address="email1"))