summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-12-10 20:28:54 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-12-10 20:28:54 +0000
commit4d698a28a26599dd182a93dcd507a97ab15c4cae (patch)
tree4a83963aebd1b5e5861303e61edf8ab881b47fa2
parenta2f90fd0038ab6586022762467ed95a84e62e224 (diff)
downloadsqlalchemy-4d698a28a26599dd182a93dcd507a97ab15c4cae.tar.gz
- first() works as expected with Query.from_statement().
-rw-r--r--CHANGES4
-rw-r--r--lib/sqlalchemy/orm/query.py10
-rw-r--r--test/orm/query.py20
3 files changed, 12 insertions, 22 deletions
diff --git a/CHANGES b/CHANGES
index f60705ea7..cc60fec7a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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()