class PyWrapper(ColumnOperators):
A wrapper object that is injected into the __globals__ and __closure__ of a Python function.
When the function is instrumented with .PyWrapper
objects, it is
then invoked just once in order to set up the wrappers. We look through
all the .PyWrapper
objects we made to find the ones that generated
a .BindParameter
object, e.g. the expression system interpreted
something as a literal. Those positions in the globals/closure are then
ones that we will look at, each time a new lambda comes in that refers to
the same __code__ object. In this way, we keep a single version of
the SQL expression that this lambda produced, without calling upon the
Python function that created it more than once, unless its other closure
variables have changed. The expression is then transformed to have the
new bound values embedded into it.
Method | __bool__ |
Undocumented |
Method | __call__ |
Undocumented |
Method | __clause_element__ |
Undocumented |
Method | __getattribute__ |
Undocumented |
Method | __getitem__ |
Implement the [] operator. |
Method | __init__ |
Undocumented |
Method | __iter__ |
Undocumented |
Method | __nonzero__ |
Undocumented |
Method | _add_getter |
Undocumented |
Method | _extract_bound_parameters |
Undocumented |
Method | operate |
Operate on an argument. |
Method | reverse_operate |
Reverse operate on an argument. |
Instance Variable | _bind_paths |
Undocumented |
Instance Variable | _closure_index |
Undocumented |
Instance Variable | _getter |
Undocumented |
Instance Variable | _has_param |
Undocumented |
Instance Variable | _name |
Undocumented |
Instance Variable | _param |
Undocumented |
Instance Variable | _to_evaluate |
Undocumented |
Instance Variable | fn |
Undocumented |
Instance Variable | track_bound_values |
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 | __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 | __slots__ |
Undocumented |
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. |
Implement the [] operator.
This can be used by some database-specific types such as PostgreSQL ARRAY and HSTORE.
Undocumented
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 | |
op | Operator callable. |
*other | the 'other' side of the operation. Will be a single scalar for most operations. |
**kwargs | modifiers. These may be passed by special
operators such as ColumnOperators.contains . |
Reverse operate on an argument.
Usage is the same as operate
.