class BinaryExpression(OperatorExpression[
Known subclasses: sqlalchemy.dialects.mysql.match
, sqlalchemy.sql.elements.IndexExpression
, sqlalchemy.sql.functions.FunctionAsBinary
Represent an expression that is ``LEFT <operator> RIGHT``. A :class:`.BinaryExpression` is generated automatically whenever two column expressions are used in a Python binary expression: .. sourcecode:: pycon+sql >>> from sqlalchemy.sql import column >>> column('a') + column('b') <sqlalchemy.sql.expression.BinaryExpression object at 0x101029dd0> >>> print(column('a') + column('b')) {printsql}a + b
Method | __bool__ |
Implement Python-side "bool" for BinaryExpression as a simple "identity" check for the left and right attributes, if the operator is "eq" or "ne". Otherwise the expression continues to not support "bool" like all other column expressions. |
Method | __init__ |
Undocumented |
Method | __invert__ |
Implement the ``~`` operator. |
Class Variable | __visit |
Undocumented |
Instance Variable | left |
Undocumented |
Instance Variable | modifiers |
Undocumented |
Instance Variable | negate |
Undocumented |
Instance Variable | operator |
Undocumented |
Instance Variable | right |
Undocumented |
Instance Variable | type |
Undocumented |
Method | _negate |
Undocumented |
Class Variable | _cache |
Undocumented |
Class Variable | _traverse |
Undocumented |
Instance Variable | _is |
Indicates that any database will know this is a boolean expression even if the database does not have an explicit boolean datatype. |
Instance Variable | _orig |
Undocumented |
Instance Variable | _propagate |
like annotations, however these propagate outwards liberally as SQL constructs are built, and are set up at construction time. |
Property | _flattened |
Undocumented |
Property | _from |
Undocumented |
Inherited from OperatorExpression
:
Method | self |
Apply a 'grouping' to this :class:`_expression.ClauseElement`. |
Class Variable | group |
Undocumented |
Property | is |
Undocumented |
Class Method | _construct |
Undocumented |
Inherited from ColumnElement
(via OperatorExpression
):
Method | __getattr__ |
Undocumented |
Method | cast |
Produce a type cast, i.e. ``CAST(<expression> AS <type>)``. |
Method | comparator |
Undocumented |
Method | label |
Produce a column label, i.e. ``<columnname> AS <name>``. |
Method | operate |
Operate on an argument. |
Method | reverse |
Reverse operate on an argument. |
Method | shares |
Return True if the given :class:`_expression.ColumnElement` has a common ancestor to this :class:`_expression.ColumnElement`. |
Class Variable | foreign |
Undocumented |
Class Variable | key |
The 'key' that in some circumstances refers to this object in a Python namespace. |
Class Variable | primary |
Undocumented |
Property | anon |
Undocumented |
Property | anon |
Undocumented |
Property | base |
Undocumented |
Property | expression |
Return a column expression. |
Property | proxy |
set of all columns we are proxying |
Method | _anon |
Undocumented |
Method | _bind |
Undocumented |
Method | _compare |
Return True if the given column element compares to this one when targeting within a result row. |
Method | _dedupe |
label to apply to a column that is anon labeled, but repeated in the SELECT, so that we have to make an "extra anon" label that disambiguates it from the previous appearance. |
Method | _dedupe |
Undocumented |
Method | _expression |
a suggested label to use in the case that the column has no name, which should be used if possible as the explicit 'AS <label>' where this expression would normally have an anon label. |
Method | _make |
Create a new :class:`_expression.ColumnElement` representing this :class:`_expression.ColumnElement` as it appears in the select list of a descending selectable. |
Method | _proxy |
Undocumented |
Method | _tq |
A label-based version of 'key' that in some circumstances refers to this object in a Python namespace. |
Method | _uncached |
An 'uncached' version of proxy set. |
Class Variable | _allow |
A flag that can be flipped to prevent a column from being resolvable by string label name. |
Class Variable | _alt |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _render |
A flag used by select._columns_plus_names that helps to determine we are actually going to render in terms of "SELECT <col> AS <label>". This flag can be returned as False for some Column objects that want to be rendered as simple "SELECT <col>"; typically columns that don't have any parent table and are named the same as what the label would be in any case. |
Property | _anon |
Provides a constant 'anonymous key label' for this ColumnElement. |
Property | _anon |
Provides a constant 'anonymous label' for this ColumnElement. |
Property | _anon |
Undocumented |
Property | _anon |
Undocumented |
Property | _expanded |
Undocumented |
Property | _key |
legacy; renamed to _tq_key_label |
Property | _label |
legacy; renamed to _tq_label |
Property | _non |
the 'name' that naturally applies this element when rendered in SQL. |
Property | _proxies |
Undocumented |
Property | _select |
Undocumented |
Property | _tq |
The named label that can be used to target this column in a result set in a "table qualified" context. |
Inherited from ColumnArgumentOrKeyRole
(via OperatorExpression
, ColumnElement
):
Class Variable | __slots__ |
Undocumented |
Class Variable | _role |
Undocumented |
Inherited from AllowsLambdaRole
(via OperatorExpression
, ColumnElement
, ColumnArgumentOrKeyRole
, ColumnArgumentRole
, StatementOptionRole
, WhereHavingRole
, OnClauseRole
, BinaryElementRole
, OrderByRole
, ColumnsClauseRole
):
Class Variable | allows |
Undocumented |
Inherited from UsesInspection
(via OperatorExpression
, ColumnElement
, ColumnArgumentOrKeyRole
, ColumnArgumentRole
, StatementOptionRole
, WhereHavingRole
, OnClauseRole
, BinaryElementRole
, OrderByRole
, ColumnsClauseRole
, AllowsLambdaRole
, ByOfRole
):
Class Variable | uses |
Undocumented |
Class Variable | _post |
Undocumented |
Inherited from SQLCoreOperations
(via OperatorExpression
, ColumnElement
, ColumnArgumentOrKeyRole
, ColumnArgumentRole
, StatementOptionRole
, WhereHavingRole
, OnClauseRole
, BinaryElementRole
, OrderByRole
, ColumnsClauseRole
, AllowsLambdaRole
, ByOfRole
, UsesInspection
, ColumnListRole
, LimitOffsetRole
, DMLColumnRole
, DDLConstraintColumnRole
, DDLExpressionRole
, StructuralRole
, SQLColumnExpression
):
Method | __add__ |
Implement the ``+`` operator. |
Method | __and__ |
Implement the ``&`` operator. |
Method | __contains__ |
Undocumented |
Method | __eq__ |
Implement the ``==`` operator. |
Method | __floordiv__ |
Implement the ``//`` operator. |
Method | __ge__ |
Implement the ``>=`` operator. |
Method | __getitem__ |
Implement the [] operator. |
Method | __gt__ |
Implement the ``>`` operator. |
Method | __le__ |
Implement the ``<=`` operator. |
Method | __lt__ |
Implement the ``<`` operator. |
Method | __mod__ |
Implement the ``%`` operator. |
Method | __mul__ |
Implement the ``*`` operator. |
Method | __ne__ |
Implement the ``!=`` operator. |
Method | __neg__ |
Implement the ``-`` operator. |
Method | __or__ |
Implement the ``|`` operator. |
Method | __radd__ |
Implement the ``+`` operator in reverse. |
Method | __rfloordiv__ |
Implement the ``//`` operator in reverse. |
Method | __rmod__ |
Implement the ``%`` operator in reverse. |
Method | __rmul__ |
Implement the ``*`` operator in reverse. |
Method | __rsub__ |
Implement the ``-`` operator in reverse. |
Method | __rtruediv__ |
Implement the ``/`` operator in reverse. |
Method | __sub__ |
Implement the ``-`` operator. |
Method | __truediv__ |
Implement the ``/`` operator. |
Method | all_ |
Produce an :func:`_expression.all_` clause against the parent object. |
Method | any_ |
Produce an :func:`_expression.any_` clause against the parent object. |
Method | asc |
Produce a :func:`_expression.asc` clause against the parent object. |
Method | between |
Produce a :func:`_expression.between` clause against the parent object, given the lower and upper range. |
Method | bool |
Return a custom boolean operator. |
Method | collate |
Produce a :func:`_expression.collate` clause against the parent object, given the collation string. |
Method | concat |
Implement the 'concat' operator. |
Method | contains |
Implement the 'contains' operator. |
Method | desc |
Produce a :func:`_expression.desc` clause against the parent object. |
Method | distinct |
Produce a :func:`_expression.distinct` clause against the parent object. |
Method | endswith |
Implement the 'endswith' operator. |
Method | ilike |
Implement the ``ilike`` operator, e.g. case insensitive LIKE. |
Method | in_ |
Implement the ``in`` operator. |
Method | is_ |
Implement the ``IS`` operator. |
Method | is |
Implement the ``IS DISTINCT FROM`` operator. |
Method | is |
Implement the ``IS NOT`` operator. |
Method | is |
Implement the ``IS NOT DISTINCT FROM`` operator. |
Method | isnot |
Undocumented |
Method | like |
Implement the ``like`` operator. |
Method | match |
Implements a database-specific 'match' operator. |
Method | not |
implement the ``NOT ILIKE`` operator. |
Method | not |
implement the ``NOT IN`` operator. |
Method | not |
implement the ``NOT LIKE`` operator. |
Method | notilike |
Undocumented |
Method | notin_ |
Undocumented |
Method | notlike |
Undocumented |
Method | nulls |
Produce a :func:`_expression.nulls_first` clause against the parent object. |
Method | nulls |
Produce a :func:`_expression.nulls_last` clause against the parent object. |
Method | nullsfirst |
Undocumented |
Method | nullslast |
Undocumented |
Method | op |
Produce a generic operator function. |
Method | regexp |
Implements a database-specific 'regexp match' operator. |
Method | regexp |
Implements a database-specific 'regexp replace' operator. |
Method | startswith |
Implement the ``startswith`` operator. |
Inherited from ColumnOperators
(via OperatorExpression
, ColumnElement
, ColumnArgumentOrKeyRole
, ColumnArgumentRole
, StatementOptionRole
, WhereHavingRole
, OnClauseRole
, BinaryElementRole
, OrderByRole
, ColumnsClauseRole
, AllowsLambdaRole
, ByOfRole
, UsesInspection
, ColumnListRole
, LimitOffsetRole
, DMLColumnRole
, DDLConstraintColumnRole
, DDLExpressionRole
, StructuralRole
, SQLColumnExpression
, SQLCoreOperations
, ExpressionElementRole
, TypedColumnsClauseRole
):
Method | __lshift__ |
implement the << operator. |
Method | __rshift__ |
implement the >> operator. |
Method | bitwise |
Produce a bitwise AND operation, typically via the ``&`` operator. |
Method | bitwise |
Produce a bitwise LSHIFT operation, typically via the ``<<`` operator. |
Method | bitwise |
Produce a bitwise NOT operation, typically via the ``~`` operator. |
Method | bitwise |
Produce a bitwise OR operation, typically via the ``|`` operator. |
Method | bitwise |
Produce a bitwise RSHIFT operation, typically via the ``>>`` operator. |
Method | bitwise |
Produce a bitwise XOR operation, typically via the ``^`` operator, or ``#`` for PostgreSQL. |
Method | icontains |
Implement the ``icontains`` operator, e.g. case insensitive version of :meth:`.ColumnOperators.contains`. |
Method | iendswith |
Implement the ``iendswith`` operator, e.g. case insensitive version of :meth:`.ColumnOperators.endswith`. |
Method | isnot |
Undocumented |
Method | istartswith |
Implement the ``istartswith`` operator, e.g. case insensitive version of :meth:`.ColumnOperators.startswith`. |
Class Variable | timetuple |
Hack, allows datetime objects to be compared on the LHS. |
Method | _rconcat |
Implement an 'rconcat' operator. |
Inherited from DQLDMLClauseElement
(via OperatorExpression
, ColumnElement
, ColumnArgumentOrKeyRole
, ColumnArgumentRole
, StatementOptionRole
, WhereHavingRole
, OnClauseRole
, BinaryElementRole
, OrderByRole
, ColumnsClauseRole
, AllowsLambdaRole
, ByOfRole
, UsesInspection
, ColumnListRole
, LimitOffsetRole
, DMLColumnRole
, DDLConstraintColumnRole
, DDLExpressionRole
, StructuralRole
, SQLColumnExpression
, SQLCoreOperations
, ExpressionElementRole
, TypedColumnsClauseRole
, ColumnOperators
, Operators
, SQLRole
):
Method | compile |
Compile this SQL expression. |
Method | _compiler |
Return a compiler appropriate for this ClauseElement, given a Dialect. |
Inherited from ClauseElement
(via OperatorExpression
, ColumnElement
, ColumnArgumentOrKeyRole
, ColumnArgumentRole
, StatementOptionRole
, WhereHavingRole
, OnClauseRole
, BinaryElementRole
, OrderByRole
, ColumnsClauseRole
, AllowsLambdaRole
, ByOfRole
, UsesInspection
, ColumnListRole
, LimitOffsetRole
, DMLColumnRole
, DDLConstraintColumnRole
, DDLExpressionRole
, StructuralRole
, SQLColumnExpression
, SQLCoreOperations
, ExpressionElementRole
, TypedColumnsClauseRole
, ColumnOperators
, Operators
, SQLRole
, DQLDMLClauseElement
):
Method | __getstate__ |
Undocumented |
Method | __repr__ |
Undocumented |
Method | compare |
Compare this :class:`_expression.ClauseElement` to the given :class:`_expression.ClauseElement`. |
Method | get |
Return immediate child :class:`.visitors.HasTraverseInternals` elements of this :class:`.visitors.HasTraverseInternals`. |
Method | params |
Return a copy with :func:`_expression.bindparam` elements replaced. |
Method | unique |
Return a copy with :func:`_expression.bindparam` elements replaced. |
Class Variable | is |
Undocumented |
Class Variable | is |
Undocumented |
Class Variable | is |
Undocumented |
Class Variable | negation |
Undocumented |
Property | description |
Undocumented |
Property | entity |
Undocumented |
Method | _clone |
Create a shallow copy of this ClauseElement. |
Method | _cloned |
Return the set consisting all cloned ancestors of this ClauseElement. |
Method | _compile |
Undocumented |
Method | _execute |
Undocumented |
Method | _execute |
an additional hook for subclasses to provide a different implementation for connection.scalar() vs. connection.execute(). |
Method | _negate |
a hook to allow the right side of a binary expression to respond to a negation of the binary expression. |
Method | _replace |
Undocumented |
Method | _set |
Undocumented |
Method | _ungroup |
Return this :class:`_expression.ClauseElement` without any groupings. |
Method | _with |
in the context of binary expression, convert the type of this object to the one given. |
Class Variable | _gen |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Class Variable | _is |
Undocumented |
Property | _constructor |
return the 'constructor' for this ClauseElement. |
Property | _order |
Undocumented |
Inherited from SupportsWrappingAnnotations
(via OperatorExpression
, ColumnElement
, ColumnArgumentOrKeyRole
, ColumnArgumentRole
, StatementOptionRole
, WhereHavingRole
, OnClauseRole
, BinaryElementRole
, OrderByRole
, ColumnsClauseRole
, AllowsLambdaRole
, ByOfRole
, UsesInspection
, ColumnListRole
, LimitOffsetRole
, DMLColumnRole
, DDLConstraintColumnRole
, DDLExpressionRole
, StructuralRole
, SQLColumnExpression
, SQLCoreOperations
, ExpressionElementRole
, TypedColumnsClauseRole
, ColumnOperators
, Operators
, SQLRole
, DQLDMLClauseElement
, ClauseElement
):
Method | _annotate |
return a copy of this ClauseElement with annotations updated by the given dictionary. |
Method | _deannotate |
return a copy of this :class:`_expression.ClauseElement` with annotations removed. |
Method | _with |
return a copy of this ClauseElement with annotations replaced by the given dictionary. |
Inherited from SupportsAnnotations
(via OperatorExpression
, ColumnElement
, ColumnArgumentOrKeyRole
, ColumnArgumentRole
, StatementOptionRole
, WhereHavingRole
, OnClauseRole
, BinaryElementRole
, OrderByRole
, ColumnsClauseRole
, AllowsLambdaRole
, ByOfRole
, UsesInspection
, ColumnListRole
, LimitOffsetRole
, DMLColumnRole
, DDLConstraintColumnRole
, DDLExpressionRole
, StructuralRole
, SQLColumnExpression
, SQLCoreOperations
, ExpressionElementRole
, TypedColumnsClauseRole
, ColumnOperators
, Operators
, SQLRole
, DQLDMLClauseElement
, ClauseElement
, SupportsWrappingAnnotations
):
Method | _gen |
Undocumented |
Property | _annotations |
Undocumented |
Inherited from MemoizedHasCacheKey
(via OperatorExpression
, ColumnElement
, ColumnArgumentOrKeyRole
, ColumnArgumentRole
, StatementOptionRole
, WhereHavingRole
, OnClauseRole
, BinaryElementRole
, OrderByRole
, ColumnsClauseRole
, AllowsLambdaRole
, ByOfRole
, UsesInspection
, ColumnListRole
, LimitOffsetRole
, DMLColumnRole
, DDLConstraintColumnRole
, DDLExpressionRole
, StructuralRole
, SQLColumnExpression
, SQLCoreOperations
, ExpressionElementRole
, TypedColumnsClauseRole
, ColumnOperators
, Operators
, SQLRole
, DQLDMLClauseElement
, ClauseElement
, SupportsWrappingAnnotations
, SupportsAnnotations
):
Method | _generate |
return a cache key. |
Inherited from HasCacheKey
(via OperatorExpression
, ColumnElement
, ColumnArgumentOrKeyRole
, ColumnArgumentRole
, StatementOptionRole
, WhereHavingRole
, OnClauseRole
, BinaryElementRole
, OrderByRole
, ColumnsClauseRole
, AllowsLambdaRole
, ByOfRole
, UsesInspection
, ColumnListRole
, LimitOffsetRole
, DMLColumnRole
, DDLConstraintColumnRole
, DDLExpressionRole
, StructuralRole
, SQLColumnExpression
, SQLCoreOperations
, ExpressionElementRole
, TypedColumnsClauseRole
, ColumnOperators
, Operators
, SQLRole
, DQLDMLClauseElement
, ClauseElement
, SupportsWrappingAnnotations
, SupportsAnnotations
, MemoizedHasCacheKey
):
Class Variable | inherit |
Indicate if this :class:`.HasCacheKey` instance should make use of the cache key generation scheme used by its immediate superclass. |
Class Method | _generate |
generate cache key dispatcher for a new class. |
Class Method | _generate |
Undocumented |
Method | _gen |
return an optional cache key. |
Class Variable | _generated |
Undocumented |
Class Variable | _hierarchy |
private attribute which may be set to False to prevent the inherit_cache warning from being emitted for a hierarchy of subclasses. |
Class Variable | _is |
Undocumented |
Inherited from HasCopyInternals
(via OperatorExpression
, ColumnElement
, ColumnArgumentOrKeyRole
, ColumnArgumentRole
, StatementOptionRole
, WhereHavingRole
, OnClauseRole
, BinaryElementRole
, OrderByRole
, ColumnsClauseRole
, AllowsLambdaRole
, ByOfRole
, UsesInspection
, ColumnListRole
, LimitOffsetRole
, DMLColumnRole
, DDLConstraintColumnRole
, DDLExpressionRole
, StructuralRole
, SQLColumnExpression
, SQLCoreOperations
, ExpressionElementRole
, TypedColumnsClauseRole
, ColumnOperators
, Operators
, SQLRole
, DQLDMLClauseElement
, ClauseElement
, SupportsWrappingAnnotations
, SupportsAnnotations
, MemoizedHasCacheKey
, HasCacheKey
):
Method | _copy |
Reassign internal elements to be clones of themselves. |
Inherited from CompilerElement
(via OperatorExpression
, ColumnElement
, ColumnArgumentOrKeyRole
, ColumnArgumentRole
, StatementOptionRole
, WhereHavingRole
, OnClauseRole
, BinaryElementRole
, OrderByRole
, ColumnsClauseRole
, AllowsLambdaRole
, ByOfRole
, UsesInspection
, ColumnListRole
, LimitOffsetRole
, DMLColumnRole
, DDLConstraintColumnRole
, DDLExpressionRole
, StructuralRole
, SQLColumnExpression
, SQLCoreOperations
, ExpressionElementRole
, TypedColumnsClauseRole
, ColumnOperators
, Operators
, SQLRole
, DQLDMLClauseElement
, ClauseElement
, SupportsWrappingAnnotations
, SupportsAnnotations
, MemoizedHasCacheKey
, HasCacheKey
, HasCopyInternals
, ExternallyTraversible
, HasTraverseInternals
):
Method | __str__ |
Undocumented |
Class Variable | stringify |
Undocumented |
Class Variable | supports |
Undocumented |
Inherited from Visitable
(via OperatorExpression
, ColumnElement
, ColumnArgumentOrKeyRole
, ColumnArgumentRole
, StatementOptionRole
, WhereHavingRole
, OnClauseRole
, BinaryElementRole
, OrderByRole
, ColumnsClauseRole
, AllowsLambdaRole
, ByOfRole
, UsesInspection
, ColumnListRole
, LimitOffsetRole
, DMLColumnRole
, DDLConstraintColumnRole
, DDLExpressionRole
, StructuralRole
, SQLColumnExpression
, SQLCoreOperations
, ExpressionElementRole
, TypedColumnsClauseRole
, ColumnOperators
, Operators
, SQLRole
, DQLDMLClauseElement
, ClauseElement
, SupportsWrappingAnnotations
, SupportsAnnotations
, MemoizedHasCacheKey
, HasCacheKey
, HasCopyInternals
, ExternallyTraversible
, HasTraverseInternals
, CompilerElement
):
Method | __class |
Undocumented |
Method | __init |
Undocumented |
Class Method | _generate |
Undocumented |
Method | _compiler |
Undocumented |
Class Variable | _original |
Undocumented |
Implement Python-side "bool" for BinaryExpression as a simple "identity" check for the left and right attributes, if the operator is "eq" or "ne". Otherwise the expression continues to not support "bool" like all other column expressions. The rationale here is so that ColumnElement objects can be hashable. What? Well, suppose you do this:: c1, c2 = column('x'), column('y') s1 = set([c1, c2]) We do that **a lot**, columns inside of sets is an extremely basic thing all over the ORM for example. So what happens if we do this? :: c1 in s1 Hashing means it will normally use ``__hash__()`` of the object, but in case of hash collision, it's going to also do ``c1 == c1`` and/or ``c1 == c2`` inside. Those operations need to return a True/False value. But because we override ``==`` and ``!=``, they're going to get a BinaryExpression. Hence we implement ``__bool__`` here so that these comparisons behave in this particular context mostly like regular object comparisons. Thankfully Python is OK with that! Otherwise we'd have to use special set classes for columns (which we used to do, decades ago).
ColumnElement[ Any]
, right: ColumnElement[ Any]
, operator: OperatorType
, type_: Optional[ _TypeEngineArgument[ _T]]
= None, negate: Optional[ OperatorType]
= None, modifiers: Optional[ Mapping[ str, Any]]
= None):
(source)
¶
Undocumented
Implement the ``~`` operator. When used with SQL expressions, results in a NOT operation, equivalent to :func:`_expression.not_`, that is:: ~a is equivalent to:: from sqlalchemy import not_ not_(a)
sqlalchemy.sql.functions.FunctionAsBinary
Indicates that any database will know this is a boolean expression even if the database does not have an explicit boolean datatype.
like annotations, however these propagate outwards liberally as SQL constructs are built, and are set up at construction time.