(self)
| 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, |
nothing calls this directly
no test coverage detected