flywheel.query module¶
Query and Scan builders
-
exception
flywheel.query.
DuplicateEntityException
[source]¶ Bases:
exceptions.ValueError
Raised when too many results are found.
-
exception
flywheel.query.
EntityNotFoundException
[source]¶ Bases:
exceptions.ValueError
Raised when results are expected and not found.
-
class
flywheel.query.
Query
(engine, model)[source]¶ Bases:
object
An object used to query dynamo tables
See the
Engine
for 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 :
Model
or 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.Query
An 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
-