From d0c243711b6f2317e701f181b6dbc2a018f0edbe Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ga=C3=ABtan=20de=20Menten?= Date: Wed, 25 Jun 2008 15:55:49 +0000 Subject: [PATCH] `session.Query().iterate_instances()` has been renamed to just `instances()`. The old `instances()` method returning a list instead of an iterator no longer exists. If you were relying on that behavior, you should use `list(your_query.instances())`. --- lib/sqlalchemy/orm/query.py | 19 ++++--------------- test/orm/deprecations.py | 2 +- test/orm/mapper.py | 4 ++-- test/orm/query.py | 18 +++++++++--------- 4 files changed, 16 insertions(+), 27 deletions(-) diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index a2a546caa0..ed82a7ca56 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -1040,28 +1040,16 @@ class Query(object): def _execute_and_instances(self, querycontext): result = self.session.execute(querycontext.statement, params=self._params, mapper=self._mapper_zero_or_none(), _state=self._refresh_state) - return self.iterate_instances(result, querycontext) + return self.instances(result, querycontext) def instances(self, cursor, __context=None): - """Given a ResultProxy cursor as returned by connection.execute(), return an ORM result as a list. + """Given a ResultProxy cursor as returned by connection.execute(), return an ORM result as an iterator. e.g.:: - - result = engine.execute("select * from users") - users = session.query(User).instances(result) - - """ - return list(self.iterate_instances(cursor, __context)) - def iterate_instances(self, cursor, __context=None): - """Given a ResultProxy cursor as returned by connection.execute(), return an ORM result as an iterator. - - e.g.:: - result = engine.execute("select * from users") - for u in session.query(User).iterate_instances(result): + for u in session.query(User).instances(result): print u - """ session = self.session @@ -1128,6 +1116,7 @@ class Query(object): if not self._yield_per: break + iterate_instances = util.deprecated()(instances) def _get(self, key=None, ident=None, refresh_state=None, lockmode=None, only_load_props=None): lockmode = lockmode or self._lockmode diff --git a/test/orm/deprecations.py b/test/orm/deprecations.py index 9da3571f9a..483e8f556b 100644 --- a/test/orm/deprecations.py +++ b/test/orm/deprecations.py @@ -268,7 +268,7 @@ class QueryAlternativesTest(_base.MappedTest): session = create_session() sel = users_table.join(addresses_table).select(use_labels=True) - res = session.query(User, Address).instances(sel.execute()) + res = list(session.query(User, Address).instances(sel.execute())) assert len(res) == 4 cola, colb = res[0] diff --git a/test/orm/mapper.py b/test/orm/mapper.py index 7d00140022..8c3bd58c94 100644 --- a/test/orm/mapper.py +++ b/test/orm/mapper.py @@ -845,7 +845,7 @@ class OptionsTest(_fixtures.FixtureTest): # session's identity map) r = users.select().order_by(users.c.id).execute() def go(): - l = sess.query(User).instances(r) + l = list(sess.query(User).instances(r)) eq_(l, self.static.user_address_result) self.sql_count_(4, go) @@ -889,7 +889,7 @@ class OptionsTest(_fixtures.FixtureTest): # then assert the data, which will launch 6 more lazy loads r = users.select().execute() def go(): - l = sess.query(User).instances(r) + l = list(sess.query(User).instances(r)) eq_(l, self.static.user_all_result) self.assert_sql_count(testing.db, go, 6) diff --git a/test/orm/query.py b/test/orm/query.py index fcefc4bd7f..d3d0643648 100644 --- a/test/orm/query.py +++ b/test/orm/query.py @@ -341,7 +341,7 @@ class CompileTest(QueryTest): session = create_session() s = session.query(User).filter(and_(addresses.c.email_address == bindparam('emailad'), Address.user_id==User.id)).statement - l = session.query(User).instances(s.execute(emailad = 'jack@bean.com')) + l = list(session.query(User).instances(s.execute(emailad = 'jack@bean.com'))) assert [User(id=7)] == l class SliceTest(QueryTest): @@ -1001,7 +1001,7 @@ class InstancesTest(QueryTest, AssertsCompiledSQL): q = sess.query(User) def go(): - l = q.options(contains_alias('ulist'), contains_eager('addresses')).instances(query.execute()) + l = list(q.options(contains_alias('ulist'), contains_eager('addresses')).instances(query.execute())) assert fixtures.user_address_result == l self.assert_sql_count(testing.db, go, 1) @@ -1044,7 +1044,7 @@ class InstancesTest(QueryTest, AssertsCompiledSQL): q = sess.query(User) def go(): - l = q.options(contains_eager('addresses')).instances(selectquery.execute()) + l = list(q.options(contains_eager('addresses')).instances(selectquery.execute())) assert fixtures.user_address_result[0:3] == l self.assert_sql_count(testing.db, go, 1) @@ -1052,7 +1052,7 @@ class InstancesTest(QueryTest, AssertsCompiledSQL): def go(): - l = q.options(contains_eager(User.addresses)).instances(selectquery.execute()) + l = list(q.options(contains_eager(User.addresses)).instances(selectquery.execute())) assert fixtures.user_address_result[0:3] == l self.assert_sql_count(testing.db, go, 1) sess.clear() @@ -1070,14 +1070,14 @@ class InstancesTest(QueryTest, AssertsCompiledSQL): # string alias name def go(): - l = q.options(contains_eager('addresses', alias="adalias")).instances(selectquery.execute()) + l = list(q.options(contains_eager('addresses', alias="adalias")).instances(selectquery.execute())) assert fixtures.user_address_result == l self.assert_sql_count(testing.db, go, 1) sess.clear() # expression.Alias object def go(): - l = q.options(contains_eager('addresses', alias=adalias)).instances(selectquery.execute()) + l = list(q.options(contains_eager('addresses', alias=adalias)).instances(selectquery.execute())) assert fixtures.user_address_result == l self.assert_sql_count(testing.db, go, 1) @@ -1098,7 +1098,7 @@ class InstancesTest(QueryTest, AssertsCompiledSQL): q = create_session().query(User) # test using string alias with more than one level deep def go(): - l = q.options(contains_eager('orders', alias='o1'), contains_eager('orders.items', alias='i1')).instances(query.execute()) + l = list(q.options(contains_eager('orders', alias='o1'), contains_eager('orders.items', alias='i1')).instances(query.execute())) assert fixtures.user_order_result == l self.assert_sql_count(testing.db, go, 1) @@ -1106,7 +1106,7 @@ class InstancesTest(QueryTest, AssertsCompiledSQL): # test using Alias with more than one level deep def go(): - l = q.options(contains_eager('orders', alias=oalias), contains_eager('orders.items', alias=ialias)).instances(query.execute()) + l = list(q.options(contains_eager('orders', alias=oalias), contains_eager('orders.items', alias=ialias)).instances(query.execute())) assert fixtures.user_order_result == l self.assert_sql_count(testing.db, go, 1) sess.clear() @@ -1333,7 +1333,7 @@ class MixedEntitiesTest(QueryTest): sess = create_session() selectquery = users.outerjoin(addresses).select(use_labels=True, order_by=[users.c.id, addresses.c.id]) - self.assertEquals(sess.query(User, Address).instances(selectquery.execute()), expected) + self.assertEquals(list(sess.query(User, Address).instances(selectquery.execute())), expected) sess.clear() for address_entity in (Address, aliased(Address)): -- 2.47.3