| 1026 | ) # m2o |
| 1027 | |
| 1028 | def test_tuple_labeling(self): |
| 1029 | sess = fixture_session() |
| 1030 | |
| 1031 | # test pickle + all the protocols ! |
| 1032 | for pickled in False, -1, 0, 1, 2: |
| 1033 | for row in sess.query(User, Address).join(User.addresses).all(): |
| 1034 | if pickled is not False: |
| 1035 | row = pickle.loads(pickle.dumps(row, pickled)) |
| 1036 | |
| 1037 | eq_(list(row._fields), ["User", "Address"]) |
| 1038 | eq_(row.User, row[0]) |
| 1039 | eq_(row.Address, row[1]) |
| 1040 | |
| 1041 | for row in sess.query(User.name, User.id.label("foobar")): |
| 1042 | if pickled is not False: |
| 1043 | row = pickle.loads(pickle.dumps(row, pickled)) |
| 1044 | eq_(list(row._fields), ["name", "foobar"]) |
| 1045 | eq_(row.name, row[0]) |
| 1046 | eq_(row.foobar, row[1]) |
| 1047 | |
| 1048 | for row in sess.query(User).with_entities( |
| 1049 | User.name, User.id.label("foobar") |
| 1050 | ): |
| 1051 | if pickled is not False: |
| 1052 | row = pickle.loads(pickle.dumps(row, pickled)) |
| 1053 | eq_(list(row._fields), ["name", "foobar"]) |
| 1054 | eq_(row.name, row[0]) |
| 1055 | eq_(row.foobar, row[1]) |
| 1056 | |
| 1057 | oalias = aliased(Order) |
| 1058 | for row in ( |
| 1059 | sess.query(User, oalias) |
| 1060 | .join(User.orders.of_type(oalias)) |
| 1061 | .all() |
| 1062 | ): |
| 1063 | if pickled is not False: |
| 1064 | row = pickle.loads(pickle.dumps(row, pickled)) |
| 1065 | eq_(list(row._fields), ["User"]) |
| 1066 | eq_(row.User, row[0]) |
| 1067 | |
| 1068 | oalias = aliased(Order, name="orders") |
| 1069 | for row in ( |
| 1070 | sess.query(User, oalias).join(oalias, User.orders).all() |
| 1071 | ): |
| 1072 | if pickled is not False: |
| 1073 | row = pickle.loads(pickle.dumps(row, pickled)) |
| 1074 | eq_(list(row._fields), ["User", "orders"]) |
| 1075 | eq_(row.User, row[0]) |
| 1076 | eq_(row.orders, row[1]) |
| 1077 | |
| 1078 | for row in sess.query(User.name + "hoho", User.name): |
| 1079 | eq_(list(row._fields), ["name"]) |
| 1080 | eq_(row[0], row.name + "hoho") |
| 1081 | |
| 1082 | if pickled is not False: |
| 1083 | ret = sess.query(User, Address).join(User.addresses).all() |
| 1084 | pickle.loads(pickle.dumps(ret, pickled)) |
| 1085 | |