class documentation

class Comparator(operators.ColumnOperators):

Known subclasses: sqlalchemy.types.Concatenable.Comparator, sqlalchemy.types.Indexable.Comparator, sqlalchemy.types.TypeDecorator.Comparator, sqlalchemy.sql.sqltypes._LookupExpressionAdapter.Comparator, sqlalchemy.sql.sqltypes.NullType.Comparator

View In Hierarchy

Base class for custom comparison operations defined at the type level. See .TypeEngine.comparator_factory.
Method operate Operate on an argument.
Method reverse​_operate Reverse operate on an argument.
Method __clause​_element__ Undocumented
Method __init__ Undocumented
Method __reduce__ Undocumented
Method ​_adapt​_expression evaluate the return type of <self> <op> <othertype>, and apply any adaptations to the given operator.
Class Variable __slots__ Undocumented
Class Variable default​_comparator Undocumented
Instance Variable expr Undocumented
Instance Variable type Undocumented

Inherited from ColumnOperators:

Method __add__ Implement the + operator.
Method __contains__ Undocumented
Method __div__ Implement the / operator.
Method __eq__ Implement the == operator.
Method __ge__ Implement the >= operator.
Method __getitem__ Implement the [] operator.
Method __gt__ Implement the > operator.
Method __le__ Implement the <= operator.
Method __lshift__ 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 __radd__ Implement the + operator in reverse.
Method __rdiv__ Implement the / operator in reverse.
Method __rmod__ Implement the % operator in reverse.
Method __rmul__ Implement the * operator in reverse.
Method __rshift__ implement the >> operator.
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 _expression.all_ clause against the parent object.
Method any​_ Produce an _expression.any_ clause against the parent object.
Method asc Produce a _expression.asc clause against the parent object.
Method between Produce a _expression.between clause against the parent object, given the lower and upper range.
Method collate Produce a _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 _expression.desc clause against the parent object.
Method distinct Produce a _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​_distinct​_from Implement the IS DISTINCT FROM operator.
Method is​_not Implement the IS NOT operator.
Method is​_not​_distinct​_from Implement the IS NOT DISTINCT FROM operator.
Method like Implement the like operator.
Method match Implements a database-specific 'match' operator.
Method not​_ilike implement the NOT ILIKE operator.
Method not​_in implement the NOT IN operator.
Method not​_like implement the NOT LIKE operator.
Method nulls​_first Produce a _expression.nulls_first clause against the parent object.
Method nulls​_last Produce a _expression.nulls_last clause against the parent object.
Method regexp​_match Implements a database-specific 'regexp match' operator.
Method regexp​_replace Implements a database-specific 'regexp replace' operator.
Method startswith Implement the startswith operator.
Class Variable timetuple Hack, allows datetime objects to be compared on the LHS.

Inherited from Operators (via ColumnOperators):

Method __and__ Implement the & operator.
Method __invert__ Implement the ~ operator.
Method __or__ Implement the | operator.
Method bool​_op Return a custom boolean operator.
Method op Produce a generic operator function.
@util.preload_module('sqlalchemy.sql.default_comparator')
def operate(self, op, *other, **kwargs):

Operate on an argument.

This is the lowest level of operation, raises NotImplementedError by default.

Overriding this on a subclass can allow common behavior to be applied to all operations. For example, overriding .ColumnOperators to apply func.lower() to the left and right side:

class MyComparator(ColumnOperators):
    def operate(self, op, other):
        return op(func.lower(self), func.lower(other))
Parameters
opOperator callable.
*otherthe 'other' side of the operation. Will be a single scalar for most operations.
**kwargsmodifiers. These may be passed by special operators such as ColumnOperators.contains.
@util.preload_module('sqlalchemy.sql.default_comparator')
def reverse_operate(self, op, other, **kwargs):

Reverse operate on an argument.

Usage is the same as operate.

def __clause_element__(self):

Undocumented

def __init__(self, expr):

Undocumented

def __reduce__(self):

Undocumented

def _adapt_expression(self, op, other_comparator):

evaluate the return type of <self> <op> <othertype>, and apply any adaptations to the given operator.

This method determines the type of a resulting binary expression given two source types and an operator. For example, two _schema.Column objects, both of the type .Integer, will produce a .BinaryExpression that also has the type .Integer when compared via the addition (+) operator. However, using the addition operator with an .Integer and a .Date object will produce a .Date, assuming "days delta" behavior by the database (in reality, most databases other than PostgreSQL don't accept this particular operation).

The method returns a tuple of the form <operator>, <type>. The resulting operator and type will be those applied to the resulting .BinaryExpression as the final operator and the right-hand side of the expression.

Note that only a subset of operators make usage of ._adapt_expression, including math operators and user-defined operators, but not boolean comparison or special SQL keywords like MATCH or BETWEEN.

__slots__: tuple[str, ...] =
default_comparator =

Undocumented

expr =

Undocumented

type =

Undocumented