dql.expressions.constraint module

Constraint expressions for selecting

class dql.expressions.constraint.BetweenConstraint(field, low, high)[source]

Bases: dql.expressions.constraint.ConstraintExpression

Constraint expression for BETWEEN low AND high

build(self, visitor)[source]

Build string expression, using the visitor to encode values

classmethod from_clause(cls, clause)[source]

Factory method

range_field[source]
class dql.expressions.constraint.Conjunction(pieces)[source]

Bases: dql.expressions.constraint.ConstraintExpression

Use AND and OR to join 2 or more expressions

classmethod and_(cls, constraints)[source]

Factory for a group AND

build(self, visitor)[source]

Build string expression, using the visitor to encode values

classmethod from_clause(cls, clause)[source]

Factory method

classmethod or_(cls, constraints)[source]

Factory for a group OR

possible_hash_fields(self)[source]
possible_range_fields(self)[source]
remove_index(self, index)[source]

This one takes some explanation. When we do a query with a WHERE statement, it may end up being a scan and it may end up being a query. If it is a query, we need to remove the hash and range key constraints from the expression and return that as the query_constraints. The remaining constraints, if any, are returned as the filter_constraints.

class dql.expressions.constraint.ConstraintExpression[source]

Bases: dql.expressions.base.Expression

Base class and entry point for constraint expressions

e.g. WHERE foo = 1

build(self, visitor)[source]

Build string expression, using the visitor to encode values

classmethod from_clause(cls, clause)[source]

Factory method

classmethod from_where(cls, where)[source]

Factory method for creating the top-level expression

hash_field[source]

The field of the hash key this expression can select, if any

possible_hash_fields(self)[source]

Set of field names this expression could possibly be selecting for the hash key of a query.

Hash keys must be exactly specified with “hash_key = value”

possible_range_fields(self)[source]

Set of field names this expression could possibly be selecting for the range key of a query.

Range keys can use operations such as <, >, <=, >=, begins_with, etc.

range_field[source]

The field of the range key this expression can select, if any

class dql.expressions.constraint.FunctionConstraint(fn_name, field, operand=None)[source]

Bases: dql.expressions.constraint.ConstraintExpression

Constraint for function expressions e.g. attribute_exists(field)

build(self, visitor)[source]

Build string expression, using the visitor to encode values

classmethod from_clause(cls, clause)[source]

Factory method

range_field[source]
class dql.expressions.constraint.InConstraint(field, values)[source]

Bases: dql.expressions.constraint.ConstraintExpression

Constraint expression for membership in a set

build(self, visitor)[source]

Build string expression, using the visitor to encode values

classmethod from_clause(cls, clause)[source]

Factory method

class dql.expressions.constraint.Invert(constraint)[source]

Bases: dql.expressions.constraint.ConstraintExpression

Invert another constraint expression with NOT

build(self, visitor)[source]

Build string expression, using the visitor to encode values

class dql.expressions.constraint.OperatorConstraint(field, operator, value)[source]

Bases: dql.expressions.constraint.ConstraintExpression

Constraint expression for operations, e.g. foo = 4

build(self, visitor)[source]

Build string expression, using the visitor to encode values

classmethod from_clause(cls, clause)[source]

Factory method

hash_field[source]
range_field[source]
remove_index(self, index)[source]

See remove_index().

This is called if the entire WHERE expression is just a “hash_key = value”. In this case, the query_constraints are just this constraint, and there are no filter_constraints.

class dql.expressions.constraint.SizeConstraint(field, operator, value)[source]

Bases: dql.expressions.constraint.ConstraintExpression

Constraint expression for size() function

build(self, visitor)[source]

Build string expression, using the visitor to encode values

classmethod from_clause(cls, clause)[source]

Factory method

class dql.expressions.constraint.TypeConstraint(fn_name, field, operand=None)[source]

Bases: dql.expressions.constraint.FunctionConstraint

Constraint for attribute_type() function

classmethod from_clause(cls, clause)[source]

Factory method

dql.expressions.constraint.field_or_value(clause)[source]

For a clause that could be a field or value, create the right one and return it