MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_one_or_none

Method test_one_or_none

test/orm/test_query.py:6722–6799  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

6720 )
6721
6722 def test_one_or_none(self):
6723 User, Address = self.classes.User, self.classes.Address
6724
6725 sess = fixture_session()
6726
6727 eq_(sess.query(User).filter(User.id == 99).one_or_none(), None)
6728
6729 eq_(sess.query(User).filter(User.id == 7).one_or_none().id, 7)
6730
6731 assert_raises_message(
6732 sa.orm.exc.MultipleResultsFound,
6733 r"Multiple rows were found when one or none was required",
6734 sess.query(User).one_or_none,
6735 )
6736
6737 eq_(
6738 sess.query(User.id, User.name).filter(User.id == 99).one_or_none(),
6739 None,
6740 )
6741
6742 eq_(
6743 sess.query(User.id, User.name).filter(User.id == 7).one_or_none(),
6744 (7, "jack"),
6745 )
6746
6747 assert_raises(
6748 sa.orm.exc.MultipleResultsFound,
6749 sess.query(User.id, User.name).one_or_none,
6750 )
6751
6752 eq_(
6753 (
6754 sess.query(User, Address)
6755 .join(User.addresses)
6756 .filter(Address.id == 99)
6757 ).one_or_none(),
6758 None,
6759 )
6760
6761 eq_(
6762 (
6763 sess.query(User, Address)
6764 .join(User.addresses)
6765 .filter(Address.id == 4)
6766 ).one_or_none(),
6767 (User(id=8), Address(id=4)),
6768 )
6769
6770 assert_raises(
6771 sa.orm.exc.MultipleResultsFound,
6772 sess.query(User, Address).join(User.addresses).one_or_none,
6773 )
6774
6775 # this result returns multiple rows, the first
6776 # two rows being the same. but uniquing is
6777 # not applied for a column based result.
6778 assert_raises(
6779 sa.orm.exc.MultipleResultsFound,

Callers

nothing calls this directly

Calls 12

fixture_sessionFunction · 0.90
eq_Function · 0.90
assert_raises_messageFunction · 0.90
assert_raisesFunction · 0.90
UserClass · 0.70
AddressClass · 0.70
one_or_noneMethod · 0.45
filterMethod · 0.45
queryMethod · 0.45
joinMethod · 0.45
order_byMethod · 0.45
in_Method · 0.45

Tested by

no test coverage detected