diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-06-08 17:38:37 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-06-08 17:38:37 +0000 |
commit | 6d22c9318196eee8d5e5e6646a26f9953095a0e7 (patch) | |
tree | 529e7aede926c62d7074f3bf3a6ed9a53998a356 /lib/sqlalchemy/sql.py | |
parent | c133b136e14c9ad7023f396abbcdd109513407db (diff) | |
download | sqlalchemy-6d22c9318196eee8d5e5e6646a26f9953095a0e7.tar.gz |
separated standalone between(), column.between(), put literal checking for both, favor column.between()
Diffstat (limited to 'lib/sqlalchemy/sql.py')
-rw-r--r-- | lib/sqlalchemy/sql.py | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index 48c9f8754..7ac28babe 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -125,10 +125,15 @@ def not_(clause): clause.parens=True return BooleanExpression(TextClause("NOT"), clause, None) -def between_(ctest, cleft, cright): - """ returns BETWEEN predicate clause (clausetest BETWEEN clauseleft AND clauseright) """ - return BooleanExpression(ctest, and_(cleft, cright), 'BETWEEN') -between = between_ +def between(ctest, cleft, cright): + """ returns BETWEEN predicate clause (clausetest BETWEEN clauseleft AND clauseright). + + this is better called off a ColumnElement directly, i.e. + + column.between(value1, value2). + """ + return BooleanExpression(ctest, and_(_check_literal(cleft, ctest.type), _check_literal(cright, ctest.type)), 'BETWEEN') +between_ = between def case(whens, value=None, else_=None): """ SQL CASE statement -- whens are a sequence of pairs to be translated into "when / then" clauses; @@ -168,6 +173,12 @@ def union_all(*selects, **params): def alias(*args, **params): return Alias(*args, **params) +def _check_literal(value, type): + if _is_literal(value): + return literal(value, type) + else: + return value + def literal(value, type=None): """returns a literal clause, bound to a bind parameter. @@ -551,7 +562,7 @@ class CompareMixin(object): def distinct(self): return CompoundClause(None,"DISTINCT", self) def between(self, cleft, cright): - return between_(self, self._check_literal(cleft), self._check_literal(cright)) + return BooleanExpression(self, and_(self._check_literal(cleft), self._check_literal(cright)), 'BETWEEN') def op(self, operator): return lambda other: self._compare(operator, other) # and here come the math operators: |