flywheel.query module¶
Query and Scan builders
-
exception
flywheel.query.DuplicateEntityException[source]¶ Bases:
exceptions.ValueErrorRaised when too many results are found.
-
exception
flywheel.query.EntityNotFoundException[source]¶ Bases:
exceptions.ValueErrorRaised when results are expected and not found.
-
class
flywheel.query.Query(engine, model)[source]¶ Bases:
objectAn object used to query dynamo tables
See the
Enginefor query examplesParameters: -
all(desc=False, consistent=False, attributes=None, filter_or=False, exclusive_start_key=None)[source]¶ Return the query results as a list
Parameters: - desc : bool, optional
Return results in descending order (default False)
- consistent : bool, optional
Force a consistent read of the data (default False)
- attributes : list, optional
List of fields to retrieve from dynamo. If supplied, returns dicts instead of model objects.
- filter_or : bool, optional
If True, multiple filter() constraints will be joined with an OR (default AND).
- exclusive_start_key : dict, optional
The ExclusiveStartKey to resume a previous query
Returns: - results : list
-
count(filter_or=False)[source]¶ Find the number of elements the match this query
Parameters: - filter_or : bool, optional
If True, multiple filter() constraints will be joined with an OR (default AND).
Returns: - count : int
-
delete(filter_or=False)[source]¶ Delete all items that match the query
Parameters: - filter_or : bool, optional
If True, multiple filter() constraints will be joined with an OR (default AND).
-
filter(*conditions, **kwargs)[source]¶ Add a Condition to constrain the query
Notes
The conditions may be passed in as positional arguments:
engine.query(User).filter(User.id == 12345)
Or they may be passed in as keyword arguments:
engine.query(User).filter(firstname='Monty', lastname='Python')
The limitations of the keyword method is that you may only create equality conditions. You may use both types in a single filter:
engine.query(User).filter(User.num_friends > 10, name='Monty')
-
first(desc=False, consistent=False, attributes=None, filter_or=False)[source]¶ Return the first result of the query, or None if no results
Parameters: - desc : bool, optional
Return results in descending order (default False)
- consistent : bool, optional
Force a consistent read of the data (default False)
- attributes : list, optional
List of fields to retrieve from dynamo. If supplied, returns dicts instead of model objects.
- filter_or : bool, optional
If True, multiple filter() constraints will be joined with an OR (default AND).
Returns: - result :
Modelor None
-
gen(desc=False, consistent=False, attributes=None, filter_or=False, exclusive_start_key=None)[source]¶ Return the query results as a generator
Parameters: - desc : bool, optional
Return results in descending order (default False)
- consistent : bool, optional
Force a consistent read of the data (default False)
- attributes : list, optional
List of fields to retrieve from dynamo. If supplied, gen() will iterate over dicts instead of model objects.
- filter_or : bool, optional
If True, multiple filter() constraints will be joined with an OR (default AND).
- exclusive_start_key : dict, optional
The ExclusiveStartKey to resume a previous query
Returns: - results : generator
-
one(consistent=False, attributes=None, filter_or=False)[source]¶ Return the result of the query. If there is not exactly one result, raises an exception (details below)
Parameters: - consistent : bool, optional
Force a consistent read of the data (default False)
- attributes : list, optional
List of fields to retrieve from dynamo. If supplied, returns dicts instead of model objects.
- filter_or : bool, optional
If True, multiple filter() constraints will be joined with an OR (default AND).
Returns: - result :
Model
Raises: - e1 :
EntityNotFoundException If no entity is found. Subclasses
ValueError.- e2 :
DuplicateEntityException If more than one entity is found. Subclasses
ValueError.
-
-
class
flywheel.query.Scan(engine, model)[source]¶ Bases:
flywheel.query.QueryAn object used to scan dynamo tables
scans are like Queries except they don’t use indexes. This means they iterate over all data in the table and are SLOW
Parameters: -
count(filter_or=False)[source]¶ Find the number of elements the match this query
Parameters: - filter_or : bool, optional
If True, multiple filter() constraints will be joined with an OR (default AND).
Returns: - count : int
-
gen(attributes=None, desc=False, consistent=False, filter_or=False, exclusive_start_key=None)[source]¶ Return the query results as a generator
Parameters: - desc : bool, optional
Return results in descending order (default False)
- consistent : bool, optional
Force a consistent read of the data (default False)
- attributes : list, optional
List of fields to retrieve from dynamo. If supplied, gen() will iterate over dicts instead of model objects.
- filter_or : bool, optional
If True, multiple filter() constraints will be joined with an OR (default AND).
- exclusive_start_key : dict, optional
The ExclusiveStartKey to resume a previous query
Returns: - results : generator
-