diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-12-10 20:28:54 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-12-10 20:28:54 +0000 |
| commit | 4d698a28a26599dd182a93dcd507a97ab15c4cae (patch) | |
| tree | 4a83963aebd1b5e5861303e61edf8ab881b47fa2 | |
| parent | a2f90fd0038ab6586022762467ed95a84e62e224 (diff) | |
| download | sqlalchemy-4d698a28a26599dd182a93dcd507a97ab15c4cae.tar.gz | |
- first() works as expected with Query.from_statement().
| -rw-r--r-- | CHANGES | 4 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/query.py | 10 | ||||
| -rw-r--r-- | test/orm/query.py | 20 |
3 files changed, 12 insertions, 22 deletions
@@ -37,7 +37,9 @@ CHANGES - Query.select_from(), from_statement() ensure that the given argument is a FromClause, or Text/Select/Union, respectively. - + + - first() works as expected with Query.from_statement(). + - Fixed bug introduced in 0.5rc4 involving eager loading not functioning for properties which were added to a mapper post-compile using diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 291837dfa..1922c5ac6 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -1035,13 +1035,13 @@ class Query(object): """ if self._statement: - return list(self)[0] + ret = list(self)[0:1] else: ret = list(self[0:1]) - if len(ret) > 0: - return ret[0] - else: - return None + if len(ret) > 0: + return ret[0] + else: + return None def one(self): """Return exactly one result or raise an exception. diff --git a/test/orm/query.py b/test/orm/query.py index 6b74b9417..5d60335dd 100644 --- a/test/orm/query.py +++ b/test/orm/query.py @@ -574,21 +574,6 @@ class SliceTest(QueryTest): ]) -class TextTest(QueryTest): - def test_fulltext(self): - assert [User(id=7), User(id=8), User(id=9),User(id=10)] == create_session().query(User).from_statement("select * from users").all() - - def test_fragment(self): - assert [User(id=8), User(id=9)] == create_session().query(User).filter("id in (8, 9)").all() - - assert [User(id=9)] == create_session().query(User).filter("name='fred'").filter("id=9").all() - - assert [User(id=9)] == create_session().query(User).filter("name='fred'").filter(User.id==9).all() - - def test_binds(self): - assert [User(id=8), User(id=9)] == create_session().query(User).filter("id in (:id1, :id2)").params(id1=8, id2=9).all() - - class FooTest(FixtureTest): keep_data = True @@ -906,7 +891,10 @@ class YieldTest(QueryTest): class TextTest(QueryTest): def test_fulltext(self): - assert [User(id=7), User(id=8), User(id=9),User(id=10)] == create_session().query(User).from_statement("select * from users").all() + assert [User(id=7), User(id=8), User(id=9),User(id=10)] == create_session().query(User).from_statement("select * from users order by id").all() + + assert User(id=7) == create_session().query(User).from_statement("select * from users order by id").first() + assert None == create_session().query(User).from_statement("select * from users where name='nonexistent'").first() def test_fragment(self): assert [User(id=8), User(id=9)] == create_session().query(User).filter("id in (8, 9)").all() |
