summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-02-23 20:46:27 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-02-23 20:46:27 +0000
commit736bc3bd5194a9a9f9dbb2424e4c0b6139bc8a77 (patch)
treea14c55fc0cafecaa8134b56fafdcff010aa7be01 /lib/sqlalchemy/sql.py
parentf0b72859f96de082021a8928c2600da241369151 (diff)
downloadsqlalchemy-736bc3bd5194a9a9f9dbb2424e4c0b6139bc8a77.tar.gz
- exists() becomes useable as a standalone selectable, not just in a
WHERE clause
Diffstat (limited to 'lib/sqlalchemy/sql.py')
-rw-r--r--lib/sqlalchemy/sql.py15
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py
index 275fec343..3acd76258 100644
--- a/lib/sqlalchemy/sql.py
+++ b/lib/sqlalchemy/sql.py
@@ -170,11 +170,10 @@ def extract(field, expr):
"""return extract(field FROM expr)"""
expr = _BinaryClause(text(field), expr, "FROM")
return func.extract(expr)
+
-def exists(*args, **params):
- params['correlate'] = True
- s = select(*args, **params)
- return _BooleanExpression(_TextClause("EXISTS"), s, None)
+def exists(*args, **kwargs):
+ return _Exists(*args, **kwargs)
def union(*selects, **params):
return _compound_select('UNION', *selects, **params)
@@ -1118,6 +1117,14 @@ class _BooleanExpression(_BinaryExpression):
return _BooleanExpression(self.left, self.right, self.negate, negate=self.operator, type=self.type)
else:
return super(_BooleanExpression, self)._negate()
+
+class _Exists(_BooleanExpression):
+ def __init__(self, *args, **kwargs):
+ kwargs['correlate'] = True
+ s = select(*args, **kwargs)
+ _BooleanExpression.__init__(self, _TextClause("EXISTS"), s, None)
+ def _hide_froms(self):
+ return self._get_from_objects()
class Join(FromClause):
def __init__(self, left, right, onclause=None, isouter = False):