From: Mike Bayer Date: Tue, 19 Apr 2016 20:11:23 +0000 (-0400) Subject: Deprecate Mapper.order_by X-Git-Tag: rel_1_1_0b1~64^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=23825a2591760285d5d42b05f81248f4f7a23631;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Deprecate Mapper.order_by This is an old parameter no longer relevant to how SQLAlchemy works, once the Query object was introduced. By deprecating it we establish that we aren't supporting non-working use cases and that we encourage applications to move off of the use of this parameter. Fixes: #3394 Change-Id: I25b9a38142a1537bbcb27d3e8b66a8b265140072 --- diff --git a/doc/build/changelog/changelog_11.rst b/doc/build/changelog/changelog_11.rst index 959bf9ee4d..cb42d61a4c 100644 --- a/doc/build/changelog/changelog_11.rst +++ b/doc/build/changelog/changelog_11.rst @@ -21,6 +21,21 @@ .. changelog:: :version: 1.1.0b1 + .. change:: + :tags: change, orm + :tickets: 3394 + + The :paramref:`.Mapper.order_by` parameter is deprecated. + This is an old parameter no longer relevant to how SQLAlchemy + works, once the Query object was introduced. By deprecating it + we establish that we aren't supporting non-working use cases + and that we encourage applications to move off of the use of this + parameter. + + .. seealso:: + + :ref:`change_3394` + .. change:: :tags: feature, postgresql diff --git a/doc/build/changelog/migration_11.rst b/doc/build/changelog/migration_11.rst index 2991d14144..7dd0717821 100644 --- a/doc/build/changelog/migration_11.rst +++ b/doc/build/changelog/migration_11.rst @@ -900,6 +900,24 @@ when a non-eagerly-loaded attribute is accessed for read:: :ticket:`3512` +.. _change_3394: + +Mapper.order_by is deprecated +----------------------------- + +This old parameter from the very first versions of SQLAlchemy was part of +the original design of the ORM which featured the :class:`.Mapper` object +as a public-facing query structure. This role has long since been replaced +by the :class:`.Query` object, where we use :meth:`.Query.order_by` to +indicate the ordering of results in a way that works consistently for any +combination of SELECT statements, entities and SQL expressions. There are +many areas in which :paramref:`.Mapper.order_by` doesn't work as expected +(or what would be expected is not clear), such as when queries are combined +into unions; these cases are not supported. + + +:ticket:`3394` + New Features and Improvements - Core ==================================== diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 2236b2f761..06d903e9cf 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -320,6 +320,10 @@ class Mapper(InspectionAttr): ordering for entities. By default mappers have no pre-defined ordering. + .. deprecated:: 1.1 The :paramref:`.Mapper.order_by` parameter + is deprecated. Use :meth:`.Query.order_by` to determine the + ordering of a result set. + :param passive_deletes: Indicates DELETE behavior of foreign key columns when a joined-table inheritance entity is being deleted. Defaults to ``False`` for a base mapper; for an inheriting mapper, @@ -564,6 +568,11 @@ class Mapper(InspectionAttr): if order_by is not False: self.order_by = util.to_list(order_by) + util.warn_deprecated( + "Mapper.order_by is deprecated." + "Use Query.order_by() in order to affect the ordering of ORM " + "result sets.") + else: self.order_by = order_by diff --git a/test/aaa_profiling/test_memusage.py b/test/aaa_profiling/test_memusage.py index 63883daac6..6529b7a1da 100644 --- a/test/aaa_profiling/test_memusage.py +++ b/test/aaa_profiling/test_memusage.py @@ -150,8 +150,7 @@ class MemUsageTest(EnsureZeroed): m1 = mapper(A, table1, properties={ "bs": relationship(B, cascade="all, delete", - order_by=table2.c.col1)}, - order_by=table1.c.col1) + order_by=table2.c.col1)}) m2 = mapper(B, table2) m3 = mapper(A, table1, non_primary=True) @@ -170,7 +169,7 @@ class MemUsageTest(EnsureZeroed): sess.flush() sess.expunge_all() - alist = sess.query(A).all() + alist = sess.query(A).order_by(A.col1).all() eq_( [ A(col2="a1", bs=[B(col2="b1"), B(col2="b2")]), @@ -220,7 +219,6 @@ class MemUsageTest(EnsureZeroed): m1 = mapper(A, table1, properties={ "bs": relationship(B, cascade="all, delete", order_by=table2.c.col1)}, - order_by=table1.c.col1, _compiled_cache_size=10 ) m2 = mapper(B, table2, @@ -249,7 +247,7 @@ class MemUsageTest(EnsureZeroed): sess.flush() sess.expunge_all() - alist = sess.query(A).all() + alist = sess.query(A).order_by(A.col1).all() eq_( [ A(col2="a1", bs=[B(col2="b1"), B(col2="b2")]), diff --git a/test/ext/declarative/test_reflection.py b/test/ext/declarative/test_reflection.py index c7f7bc05d1..84b675b3d0 100644 --- a/test/ext/declarative/test_reflection.py +++ b/test/ext/declarative/test_reflection.py @@ -281,7 +281,7 @@ class DeferredReflectionTest(DeferredReflectBase): @decl.declared_attr def __mapper_args__(cls): return { - "order_by": cls.__table__.c.name + "primary_key": cls.__table__.c.id } decl.DeferredReflection.prepare(testing.db) @@ -294,7 +294,7 @@ class DeferredReflectionTest(DeferredReflectBase): ]) sess.commit() eq_( - sess.query(User).all(), + sess.query(User).order_by(User.name).all(), [ User(name='A'), User(name='C'), diff --git a/test/orm/inheritance/_poly_fixtures.py b/test/orm/inheritance/_poly_fixtures.py index 689d19d338..c70cd90622 100644 --- a/test/orm/inheritance/_poly_fixtures.py +++ b/test/orm/inheritance/_poly_fixtures.py @@ -250,7 +250,6 @@ class _PolymorphicFixtureBase(fixtures.MappedTest, AssertsCompiledSQL): with_polymorphic=person_with_polymorphic, polymorphic_on=people.c.type, polymorphic_identity='person', - order_by=people.c.person_id, properties={ 'paperwork':relationship( Paperwork, diff --git a/test/orm/inheritance/test_poly_linked_list.py b/test/orm/inheritance/test_poly_linked_list.py index f131feca7f..aead3e00b6 100644 --- a/test/orm/inheritance/test_poly_linked_list.py +++ b/test/orm/inheritance/test_poly_linked_list.py @@ -77,8 +77,7 @@ class PolymorphicCircularTest(fixtures.MappedTest): backref=backref('prev', foreignkey=join.c.id, uselist=False), uselist=False, primaryjoin=join.c.id==join.c.related_id), 'data':relationship(mapper(Data, data)) - }, - order_by=table1.c.id) + }) configure_mappers() assert False except: @@ -100,8 +99,7 @@ class PolymorphicCircularTest(fixtures.MappedTest): backref=backref('prev', remote_side=table1.c.id, uselist=False), uselist=False, primaryjoin=table1.c.id==table1.c.related_id), 'data':relationship(mapper(Data, data), lazy='joined', order_by=data.c.id) - }, - order_by=table1.c.id + } ) table1b_mapper = mapper(Table1B, inherits=table1_mapper, polymorphic_identity='table1b') @@ -168,7 +166,8 @@ class PolymorphicCircularTest(fixtures.MappedTest): # clear and query forwards sess.expunge_all() - node = sess.query(Table1).filter(Table1.id==t.id).first() + node = sess.query(Table1).order_by(Table1.id).\ + filter(Table1.id==t.id).first() assertlist = [] while (node): assertlist.append(node) @@ -180,7 +179,8 @@ class PolymorphicCircularTest(fixtures.MappedTest): # clear and query backwards sess.expunge_all() - node = sess.query(Table1).filter(Table1.id==obj.id).first() + node = sess.query(Table1).order_by(Table1.id).\ + filter(Table1.id==obj.id).first() assertlist = [] while (node): assertlist.insert(0, node) diff --git a/test/orm/inheritance/test_polymorphic_rel.py b/test/orm/inheritance/test_polymorphic_rel.py index c82c30d592..79278ba3e3 100644 --- a/test/orm/inheritance/test_polymorphic_rel.py +++ b/test/orm/inheritance/test_polymorphic_rel.py @@ -47,7 +47,9 @@ class _PolymorphicTestBase(object): sess = create_session() def go(): - eq_(sess.query(Person).all(), all_employees) + eq_( + sess.query(Person).order_by(Person.person_id).all(), + all_employees) count = {'':14, 'Polymorphic':9}.get(self.select_type, 10) self.assert_sql_count(testing.db, go, count) @@ -57,7 +59,7 @@ class _PolymorphicTestBase(object): sess = create_session() def go(): - eq_(sess.query(Person) + eq_(sess.query(Person).order_by(Person.person_id) .options(joinedload(Engineer.machines))[1:3], all_employees[1:3]) count = {'':6, 'Polymorphic':3}.get(self.select_type, 4) @@ -66,7 +68,7 @@ class _PolymorphicTestBase(object): def test_primary_eager_aliasing_two(self): sess = create_session() def go(): - eq_(sess.query(Person) + eq_(sess.query(Person).order_by(Person.person_id) .options(subqueryload(Engineer.machines)).all(), all_employees) count = {'':14, 'Polymorphic':7}.get(self.select_type, 8) @@ -79,6 +81,7 @@ class _PolymorphicTestBase(object): sess = create_session() def go(): eq_(sess.query(Person).with_polymorphic('*') + .order_by(Person.person_id) .options(joinedload(Engineer.machines))[1:3], all_employees[1:3]) self.assert_sql_count(testing.db, go, 3) @@ -183,6 +186,7 @@ class _PolymorphicTestBase(object): def test_join_from_polymorphic_nonaliased_two(self): sess = create_session() eq_(sess.query(Person) + .order_by(Person.person_id) .join('paperwork', aliased=False) .filter(Paperwork.description.like('%#2%')).all(), [e1, m1]) @@ -190,6 +194,7 @@ class _PolymorphicTestBase(object): def test_join_from_polymorphic_nonaliased_three(self): sess = create_session() eq_(sess.query(Engineer) + .order_by(Person.person_id) .join('paperwork', aliased=False) .filter(Paperwork.description.like('%#2%')).all(), [e1]) @@ -197,6 +202,7 @@ class _PolymorphicTestBase(object): def test_join_from_polymorphic_nonaliased_four(self): sess = create_session() eq_(sess.query(Person) + .order_by(Person.person_id) .join('paperwork', aliased=False) .filter(Person.name.like('%dog%')) .filter(Paperwork.description.like('%#2%')).all(), @@ -205,6 +211,7 @@ class _PolymorphicTestBase(object): def test_join_from_polymorphic_aliased_one(self): sess = create_session() eq_(sess.query(Person) + .order_by(Person.person_id) .join('paperwork', aliased=True) .filter(Paperwork.description.like('%review%')).all(), [b1, m1]) @@ -212,6 +219,7 @@ class _PolymorphicTestBase(object): def test_join_from_polymorphic_aliased_two(self): sess = create_session() eq_(sess.query(Person) + .order_by(Person.person_id) .join('paperwork', aliased=True) .filter(Paperwork.description.like('%#2%')).all(), [e1, m1]) @@ -219,6 +227,7 @@ class _PolymorphicTestBase(object): def test_join_from_polymorphic_aliased_three(self): sess = create_session() eq_(sess.query(Engineer) + .order_by(Person.person_id) .join('paperwork', aliased=True) .filter(Paperwork.description.like('%#2%')).all(), [e1]) @@ -226,6 +235,7 @@ class _PolymorphicTestBase(object): def test_join_from_polymorphic_aliased_four(self): sess = create_session() eq_(sess.query(Person) + .order_by(Person.person_id) .join('paperwork', aliased=True) .filter(Person.name.like('%dog%')) .filter(Paperwork.description.like('%#2%')).all(), @@ -235,6 +245,7 @@ class _PolymorphicTestBase(object): sess = create_session() eq_(sess.query(Person) .with_polymorphic(Manager) + .order_by(Person.person_id) .join('paperwork') .filter(Paperwork.description.like('%review%')).all(), [b1, m1]) @@ -243,6 +254,7 @@ class _PolymorphicTestBase(object): sess = create_session() eq_(sess.query(Person) .with_polymorphic([Manager, Engineer]) + .order_by(Person.person_id) .join('paperwork') .filter(Paperwork.description.like('%#2%')).all(), [e1, m1]) @@ -251,6 +263,7 @@ class _PolymorphicTestBase(object): sess = create_session() eq_(sess.query(Person) .with_polymorphic([Manager, Engineer]) + .order_by(Person.person_id) .join('paperwork') .filter(Person.name.like('%dog%')) .filter(Paperwork.description.like('%#2%')).all(), @@ -269,6 +282,7 @@ class _PolymorphicTestBase(object): sess = create_session() eq_(sess.query(Person) .with_polymorphic([Manager, Engineer]) + .order_by(Person.person_id) .join('paperwork', aliased=True) .filter(Paperwork.description.like('%#2%')).all(), [e1, m1]) @@ -277,6 +291,7 @@ class _PolymorphicTestBase(object): sess = create_session() eq_(sess.query(Person) .with_polymorphic([Manager, Engineer]) + .order_by(Person.person_id) .join('paperwork', aliased=True) .filter(Person.name.like('%dog%')) .filter(Paperwork.description.like('%#2%')).all(), @@ -326,14 +341,17 @@ class _PolymorphicTestBase(object): sess = create_session() any_ = Engineer.machines.any( Machine.name == "Commodore 64") - eq_(sess.query(Person).filter(any_).all(), [e2, e3]) + eq_( + sess.query(Person).order_by(Person.person_id).filter(any_).all(), + [e2, e3]) def test_polymorphic_any_nine(self): sess = create_session() any_ = Person.paperwork.any( Paperwork.description == "review #2") - eq_(sess.query(Person).filter(any_).all(), [m1]) - + eq_( + sess.query(Person).order_by(Person.person_id).filter(any_).all(), + [m1]) def test_join_from_columns_or_subclass_one(self): sess = create_session() @@ -541,7 +559,7 @@ class _PolymorphicTestBase(object): sess = create_session() def go(): eq_(sess.query(Person) - .with_polymorphic('*').all(), + .with_polymorphic('*').order_by(Person.person_id).all(), self._emps_wo_relationships_fixture()) self.assert_sql_count(testing.db, go, 1) @@ -588,7 +606,8 @@ class _PolymorphicTestBase(object): sess = create_session() # compare to entities without related collections to prevent # additional lazy SQL from firing on loaded entities - eq_(sess.query(Person).with_polymorphic('*').all(), + eq_(sess.query(Person).with_polymorphic('*'). + order_by(Person.person_id).all(), self._emps_wo_relationships_fixture()) @@ -944,9 +963,11 @@ class _PolymorphicTestBase(object): def test_filter_on_baseclass(self): sess = create_session() - eq_(sess.query(Person).all(), all_employees) - eq_(sess.query(Person).first(), all_employees[0]) - eq_(sess.query(Person) + eq_(sess.query(Person).order_by(Person.person_id).all(), all_employees) + eq_( + sess.query(Person).order_by(Person.person_id).first(), + all_employees[0]) + eq_(sess.query(Person).order_by(Person.person_id) .filter(Person.person_id == e2.person_id).one(), e2) @@ -954,6 +975,7 @@ class _PolymorphicTestBase(object): sess = create_session() palias = aliased(Person) eq_(sess.query(palias) + .order_by(palias.person_id) .filter(palias.name.in_(['dilbert', 'wally'])).all(), [e1, e2]) @@ -1029,6 +1051,7 @@ class _PolymorphicTestBase(object): 'Elbonia, Inc.')] eq_(sess.query(Engineer, Company.name) .join(Company.employees) + .order_by(Person.person_id) .filter(Person.type == 'engineer').all(), expected) @@ -1357,6 +1380,7 @@ class PolymorphicPolymorphicTest(_PolymorphicTestBase, _PolymorphicPolymorphic): palias = aliased(Person) self.assert_compile( sess.query(palias, Company.name) + .order_by(palias.person_id) .join(Person, Company.employees) .filter(palias.name == 'dilbert'), "SELECT anon_1.people_person_id AS anon_1_people_person_id, " @@ -1408,6 +1432,7 @@ class PolymorphicPolymorphicTest(_PolymorphicTestBase, _PolymorphicPolymorphic): self.assert_compile( sess.query(palias, Company.name) .select_from(palias) + .order_by(palias.person_id) .join(Person, Company.employees) .filter(palias.name == 'dilbert'), "SELECT people_1.person_id AS people_1_person_id, " diff --git a/test/orm/test_association.py b/test/orm/test_association.py index 376cfaa84f..bcd2131fb5 100644 --- a/test/orm/test_association.py +++ b/test/orm/test_association.py @@ -59,11 +59,12 @@ class AssociationTest(fixtures.MappedTest): mapper(Keyword, keywords) mapper(KeywordAssociation, item_keywords, properties={ 'keyword':relationship(Keyword, lazy='joined')}, - primary_key=[item_keywords.c.item_id, item_keywords.c.keyword_id], - order_by=[item_keywords.c.data]) + primary_key= + [item_keywords.c.item_id, item_keywords.c.keyword_id]) mapper(Item, items, properties={ 'keywords' : relationship(KeywordAssociation, + order_by=item_keywords.c.data, cascade="all, delete-orphan") }) diff --git a/test/orm/test_deferred.py b/test/orm/test_deferred.py index 7f449c40ac..957e1d4195 100644 --- a/test/orm/test_deferred.py +++ b/test/orm/test_deferred.py @@ -19,13 +19,13 @@ class DeferredTest(AssertsCompiledSQL, _fixtures.FixtureTest): Order, orders = self.classes.Order, self.tables.orders - mapper(Order, orders, order_by=orders.c.id, properties={ + mapper(Order, orders, properties={ 'description': deferred(orders.c.description)}) o = Order() self.assert_(o.description is None) - q = create_session().query(Order) + q = create_session().query(Order).order_by(Order.id) def go(): l = q.all() o2 = l[2] @@ -47,7 +47,7 @@ class DeferredTest(AssertsCompiledSQL, _fixtures.FixtureTest): Order, orders = self.classes.Order, self.tables.orders - mapper(Order, orders, order_by=orders.c.id, properties={ + mapper(Order, orders, properties={ 'id': deferred(orders.c.id)}) # right now, it's not that graceful :) @@ -107,7 +107,7 @@ class DeferredTest(AssertsCompiledSQL, _fixtures.FixtureTest): orders, Order = self.tables.orders, self.classes.Order - mapper(Order, orders, order_by=orders.c.id, properties=dict( + mapper(Order, orders, properties=dict( description=deferred(orders.c.description, group='primary'), opened=deferred(orders.c.isopen, group='primary'))) @@ -122,7 +122,7 @@ class DeferredTest(AssertsCompiledSQL, _fixtures.FixtureTest): def test_unsaved_group_2(self): orders, Order = self.tables.orders, self.classes.Order - mapper(Order, orders, order_by=orders.c.id, properties=dict( + mapper(Order, orders, properties=dict( description=deferred(orders.c.description, group='primary'), opened=deferred(orders.c.isopen, group='primary'))) @@ -685,7 +685,8 @@ class InheritanceTest(_Polymorphic): def test_load_only_subclass(self): s = Session() - q = s.query(Manager).options(load_only("status", "manager_name")) + q = s.query(Manager).order_by(Manager.person_id).\ + options(load_only("status", "manager_name")) self.assert_compile( q, "SELECT managers.person_id AS managers_person_id, " @@ -695,12 +696,13 @@ class InheritanceTest(_Polymorphic): "managers.manager_name AS managers_manager_name " "FROM people JOIN managers " "ON people.person_id = managers.person_id " - "ORDER BY people.person_id" + "ORDER BY managers.person_id" ) def test_load_only_subclass_and_superclass(self): s = Session() - q = s.query(Boss).options(load_only("status", "manager_name")) + q = s.query(Boss).order_by(Person.person_id).\ + options(load_only("status", "manager_name")) self.assert_compile( q, "SELECT managers.person_id AS managers_person_id, " @@ -716,7 +718,8 @@ class InheritanceTest(_Polymorphic): def test_load_only_alias_subclass(self): s = Session() m1 = aliased(Manager, flat=True) - q = s.query(m1).options(load_only("status", "manager_name")) + q = s.query(m1).order_by(m1.person_id).\ + options(load_only("status", "manager_name")) self.assert_compile( q, "SELECT managers_1.person_id AS managers_1_person_id, " @@ -726,7 +729,7 @@ class InheritanceTest(_Polymorphic): "managers_1.manager_name AS managers_1_manager_name " "FROM people AS people_1 JOIN managers AS " "managers_1 ON people_1.person_id = managers_1.person_id " - "ORDER BY people_1.person_id" + "ORDER BY managers_1.person_id" ) def test_load_only_subclass_from_relationship_polymorphic(self): @@ -778,7 +781,7 @@ class InheritanceTest(_Polymorphic): # exclude the primary key s = Session() - q = s.query(Manager).options( + q = s.query(Manager).order_by(Person.person_id).options( defer(".*"), undefer("status")) self.assert_compile( q, @@ -789,7 +792,7 @@ class InheritanceTest(_Polymorphic): def test_defer_super_name_on_subclass(self): s = Session() - q = s.query(Manager).options(defer("name")) + q = s.query(Manager).order_by(Person.person_id).options(defer("name")) self.assert_compile( q, "SELECT managers.person_id AS managers_person_id, " diff --git a/test/orm/test_eager_relations.py b/test/orm/test_eager_relations.py index 3ad641b8fc..9f707c791e 100644 --- a/test/orm/test_eager_relations.py +++ b/test/orm/test_eager_relations.py @@ -3095,7 +3095,7 @@ class SelfReferentialEagerTest(fixtures.MappedTest): mapper(Node, nodes, properties={ 'children': relationship(Node, lazy='select', order_by=nodes.c.id) - }, order_by=nodes.c.id) + }) sess = create_session() n1 = Node(data='n1') n1.append(Node(data='n11')) @@ -3110,6 +3110,7 @@ class SelfReferentialEagerTest(fixtures.MappedTest): def go(): d = sess.query(Node).filter_by(data='n1').\ + order_by(Node.id).\ options(joinedload('children.children')).first() eq_(Node(data='n1', children=[ Node(data='n11'), @@ -3123,7 +3124,7 @@ class SelfReferentialEagerTest(fixtures.MappedTest): self.assert_sql_count(testing.db, go, 2) def go(): - sess.query(Node).filter_by(data='n1').\ + sess.query(Node).order_by(Node.id).filter_by(data='n1').\ options(joinedload('children.children')).first() # test that the query isn't wrapping the initial query for eager diff --git a/test/orm/test_froms.py b/test/orm/test_froms.py index 4246df1f68..f6f7d9d77e 100644 --- a/test/orm/test_froms.py +++ b/test/orm/test_froms.py @@ -1845,6 +1845,7 @@ class SelectFromTest(QueryTest, AssertsCompiledSQL): options(joinedload('addresses')).first(), User(name='jack', addresses=[Address(id=1)])) + @testing.uses_deprecated("Mapper.order_by") def test_join_mapper_order_by(self): """test that mapper-level order_by is adapted to a selectable.""" diff --git a/test/orm/test_joins.py b/test/orm/test_joins.py index e7e943e8d5..e14af635d7 100644 --- a/test/orm/test_joins.py +++ b/test/orm/test_joins.py @@ -144,7 +144,6 @@ class InheritedJoinTest(fixtures.MappedTest, AssertsCompiledSQL): mapper(Person, people, polymorphic_on=people.c.type, polymorphic_identity='person', - order_by=people.c.person_id, properties={ 'paperwork':relationship(Paperwork, order_by=paperwork.c.paperwork_id) }) @@ -220,6 +219,7 @@ class InheritedJoinTest(fixtures.MappedTest, AssertsCompiledSQL): self.assert_compile( sess.query(Person).with_polymorphic(Manager). + order_by(Person.person_id). join('paperwork').filter(Paperwork.description.like('%review%')), "SELECT people.person_id AS people_person_id, people.company_id AS" " people_company_id, " @@ -243,6 +243,7 @@ class InheritedJoinTest(fixtures.MappedTest, AssertsCompiledSQL): self.assert_compile( sess.query(Person).with_polymorphic(Manager). + order_by(Person.person_id). join('paperwork', aliased=True). filter(Paperwork.description.like('%review%')), "SELECT people.person_id AS people_person_id, people.company_id AS people_company_id, " diff --git a/test/orm/test_mapper.py b/test/orm/test_mapper.py index d4eed4d924..69a0396819 100644 --- a/test/orm/test_mapper.py +++ b/test/orm/test_mapper.py @@ -1124,6 +1124,7 @@ class MapperTest(_fixtures.FixtureTest, AssertsCompiledSQL): eq_(l, [self.static.user_result[0]]) + @testing.uses_deprecated("Mapper.order_by") def test_cancel_order_by(self): users, User = self.tables.users, self.classes.User @@ -1164,9 +1165,9 @@ class MapperTest(_fixtures.FixtureTest, AssertsCompiledSQL): users.c.id == addresses.c.user_id, group_by=[c for c in users.c]).alias('myselect') - mapper(User, s, order_by=s.c.id) + mapper(User, s) sess = create_session() - l = sess.query(User).all() + l = sess.query(User).order_by(s.c.id).all() for idx, total in enumerate((14, 16)): eq_(l[idx].concat, l[idx].id * 2) @@ -2118,7 +2119,7 @@ class DeepOptionsTest(_fixtures.FixtureTest): items=relationship(Item, order_items, order_by=items.c.id))) - mapper(User, users, order_by=users.c.id, properties=dict( + mapper(User, users, properties=dict( orders=relationship(Order, order_by=orders.c.id))) def test_deep_options_1(self): @@ -2127,7 +2128,7 @@ class DeepOptionsTest(_fixtures.FixtureTest): sess = create_session() # joinedload nothing. - u = sess.query(User).all() + u = sess.query(User).order_by(User.id).all() def go(): u[0].orders[1].items[0].keywords[1] @@ -2141,6 +2142,7 @@ class DeepOptionsTest(_fixtures.FixtureTest): sess = create_session() l = (sess.query(User). + order_by(User.id). options(sa.orm.joinedload_all('orders.items.keywords'))).all() def go(): @@ -2163,6 +2165,7 @@ class DeepOptionsTest(_fixtures.FixtureTest): # same thing, with separate options calls q2 = (sess.query(User). + order_by(User.id). options(sa.orm.joinedload('orders')). options(sa.orm.joinedload('orders.items')). options(sa.orm.joinedload('orders.items.keywords'))) @@ -2188,7 +2191,7 @@ class DeepOptionsTest(_fixtures.FixtureTest): # joinedload "keywords" on items. it will lazy load "orders", then # lazy load the "items" on the order, but on "items" it will eager # load the "keywords" - q3 = sess.query(User).options( + q3 = sess.query(User).order_by(User.id).options( sa.orm.joinedload('orders.items.keywords')) u = q3.all() @@ -2197,7 +2200,7 @@ class DeepOptionsTest(_fixtures.FixtureTest): self.sql_count_(2, go) sess = create_session() - q3 = sess.query(User).options( + q3 = sess.query(User).order_by(User.id).options( sa.orm.joinedload(User.orders, Order.items, Item.keywords)) u = q3.all() diff --git a/test/orm/test_onetoone.py b/test/orm/test_onetoone.py index 19b13c4ddc..39efd09dd3 100644 --- a/test/orm/test_onetoone.py +++ b/test/orm/test_onetoone.py @@ -37,7 +37,6 @@ class O2OTest(fixtures.MappedTest): mapper(Port, port) mapper(Jack, jack, - order_by=[jack.c.number], properties=dict( port=relationship(Port, backref='jack', uselist=False, diff --git a/test/orm/test_relationships.py b/test/orm/test_relationships.py index 0611873303..00d41604ca 100644 --- a/test/orm/test_relationships.py +++ b/test/orm/test_relationships.py @@ -1309,7 +1309,6 @@ class RelationshipToSelectableTest(fixtures.MappedTest): mapper( Container, container_select, - order_by=sa.asc(container_select.c.type), properties=dict( lineItems=relationship( LineItem, @@ -1343,7 +1342,8 @@ class RelationshipToSelectableTest(fixtures.MappedTest): session.add(li) session.flush() session.expunge_all() - newcon = session.query(Container).first() + newcon = session.query(Container).\ + order_by(container_select.c.type).first() assert con.policyNum == newcon.policyNum assert len(newcon.lineItems) == 10 for old, new in zip(con.lineItems, newcon.lineItems): diff --git a/test/orm/test_subquery_relations.py b/test/orm/test_subquery_relations.py index 0f8ffb6e72..032f24a5e5 100644 --- a/test/orm/test_subquery_relations.py +++ b/test/orm/test_subquery_relations.py @@ -671,6 +671,7 @@ class EagerTest(_fixtures.FixtureTest, testing.AssertsCompiledSQL): l = q.order_by(sa.desc(User.id)).limit(2).offset(2).all() eq_(list(reversed(self.static.user_all_result[0:2])), l) + @testing.uses_deprecated("Mapper.order_by") def test_mapper_order_by(self): users, User, Address, addresses = (self.tables.users, self.classes.User, @@ -1544,7 +1545,7 @@ class SelfReferentialTest(fixtures.MappedTest): mapper(Node, nodes, properties={ 'children':relationship(Node, order_by=nodes.c.id) - }, order_by=nodes.c.id) + }) sess = create_session() n1 = Node(data='n1') n1.append(Node(data='n11')) @@ -1557,7 +1558,7 @@ class SelfReferentialTest(fixtures.MappedTest): sess.flush() sess.expunge_all() def go(): - d = sess.query(Node).filter_by(data='n1').\ + d = sess.query(Node).filter_by(data='n1').order_by(Node.id).\ options(subqueryload_all('children.children')).first() eq_(Node(data='n1', children=[ Node(data='n11'), diff --git a/test/orm/test_unitofwork.py b/test/orm/test_unitofwork.py index 2f67943f1e..21cb1dd12c 100644 --- a/test/orm/test_unitofwork.py +++ b/test/orm/test_unitofwork.py @@ -2178,11 +2178,15 @@ class SaveTest3(fixtures.MappedTest): session.flush() assert assoc.count().scalar() == 0 + class BooleanColTest(fixtures.MappedTest): @classmethod def define_tables(cls, metadata): - Table('t1_t', metadata, - Column('id', Integer, primary_key=True, test_needs_autoincrement=True), + Table( + 't1_t', metadata, + Column( + 'id', Integer, + primary_key=True, test_needs_autoincrement=True), Column('name', String(30)), Column('value', sa.Boolean)) @@ -2192,7 +2196,7 @@ class BooleanColTest(fixtures.MappedTest): # use the regular mapper class T(fixtures.ComparableEntity): pass - orm_mapper(T, t1_t, order_by=t1_t.c.id) + orm_mapper(T, t1_t) sess = create_session() t1 = T(value=True, name="t1") @@ -2205,21 +2209,35 @@ class BooleanColTest(fixtures.MappedTest): for clear in (False, True): if clear: sess.expunge_all() - eq_(sess.query(T).all(), [T(value=True, name="t1"), T(value=False, name="t2"), T(value=True, name="t3")]) + eq_( + sess.query(T).order_by(T.id).all(), + [ + T(value=True, name="t1"), + T(value=False, name="t2"), T(value=True, name="t3")]) if clear: sess.expunge_all() - eq_(sess.query(T).filter(T.value==True).all(), [T(value=True, name="t1"),T(value=True, name="t3")]) + eq_( + sess.query(T).filter(T.value == True).order_by(T.id).all(), + [T(value=True, name="t1"), T(value=True, name="t3")]) if clear: sess.expunge_all() - eq_(sess.query(T).filter(T.value==False).all(), [T(value=False, name="t2")]) + eq_( + sess.query(T).filter(T.value == False).order_by(T.id).all(), + [T(value=False, name="t2")]) t2 = sess.query(T).get(t2.id) t2.value = True sess.flush() - eq_(sess.query(T).filter(T.value==True).all(), [T(value=True, name="t1"), T(value=True, name="t2"), T(value=True, name="t3")]) + eq_( + sess.query(T).filter(T.value == True).order_by(T.id).all(), + [ + T(value=True, name="t1"), + T(value=True, name="t2"), T(value=True, name="t3")]) t2.value = False sess.flush() - eq_(sess.query(T).filter(T.value==True).all(), [T(value=True, name="t1"),T(value=True, name="t3")]) + eq_( + sess.query(T).filter(T.value == True).order_by(T.id).all(), + [T(value=True, name="t1"), T(value=True, name="t3")]) class RowSwitchTest(fixtures.MappedTest):