diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-01-28 21:13:38 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-01-28 21:13:38 +0000 |
commit | d1916eb6c95bb570467189e64c33e39d82bbaf8f (patch) | |
tree | c53208c3b64f5017842d67eef0ab5060d607837c | |
parent | 0ca4107c3ed9caff2f6584e4b7215294a6409790 (diff) | |
download | sqlalchemy-d1916eb6c95bb570467189e64c33e39d82bbaf8f.tar.gz |
- allow exists(s.as_scalar()) to work
-rw-r--r-- | lib/sqlalchemy/sql/expression.py | 2 | ||||
-rw-r--r-- | test/sql/test_select.py | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index bf3d16e69..5f17c223c 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -2680,7 +2680,7 @@ class _Exists(_UnaryExpression): _from_objects = [] def __init__(self, *args, **kwargs): - if args and isinstance(args[0], _SelectBaseMixin): + if args and isinstance(args[0], (_SelectBaseMixin, _ScalarSelect)): s = args[0] else: if not args: diff --git a/test/sql/test_select.py b/test/sql/test_select.py index d5ba8fa9e..8390c7342 100644 --- a/test/sql/test_select.py +++ b/test/sql/test_select.py @@ -279,6 +279,16 @@ sq.myothertable_othername AS sq_myothertable_othername FROM (" + sqstring + ") A self.assert_compile(s, "SELECT t.a WHERE t.a = t2.d") def test_exists(self): + s = select([table1.c.myid]).where(table1.c.myid==5) + + self.assert_compile(exists(s), + "EXISTS (SELECT mytable.myid FROM mytable WHERE mytable.myid = :myid_1)" + ) + + self.assert_compile(exists(s.as_scalar()), + "EXISTS (SELECT mytable.myid FROM mytable WHERE mytable.myid = :myid_1)" + ) + self.assert_compile(exists([table1.c.myid], table1.c.myid==5).select(), "SELECT EXISTS (SELECT mytable.myid FROM mytable WHERE mytable.myid = :myid_1)", params={'mytable_myid':5}) self.assert_compile(select([table1, exists([1], from_obj=table2)]), "SELECT mytable.myid, mytable.name, mytable.description, EXISTS (SELECT 1 FROM myothertable) FROM mytable", params={}) |