Query(
client,
kind=None,
project=None,
namespace=None,
ancestor=None,
filters=(),
projection=(),
order=(),
distinct_on=(),
)
A Query against the Cloud Datastore.
This class serves as an abstraction for creating a query over data stored in the Cloud Datastore.
Parameters
Name | Description |
client |
Client
The client used to connect to Datastore. |
kind |
str
The kind to query. |
project |
str
(Optional) The project associated with the query. If not passed, uses the client's value. |
namespace |
str
(Optional) The namespace to which to restrict results. If not passed, uses the client's value. |
ancestor |
Key
(Optional) key of the ancestor to which this query's results are restricted. |
filters |
tuple[str, str, str]
Property filters applied by this query. The sequence is |
projection |
sequence of string
fields returned as part of query results. |
order |
sequence of string
field names used to order query results. Prepend |
distinct_on |
sequence of string
field names used to group query results. |
Inheritance
builtins.object > QueryProperties
ancestor
The ancestor key for the query.
Type | Description |
Key or None | The ancestor for the query. |
distinct_on
Names of fields used to group query results.
Type | Description |
sequence of string | The "distinct on" fields set on the query. |
filters
Filters set on the query.
Type | Description |
tuple[str, str, str] | The filters set on the query. The sequence is ``(property_name, operator, value)``. |
kind
Get the Kind of the Query.
Type | Description |
str | The kind for the query. |
namespace
This query's namespace
Type | Description |
str or None | the namespace assigned to this query |
order
Names of fields used to sort query results.
Type | Description |
sequence of string | The order(s) set on the query. |
project
Get the project for this Query.
Type | Description |
str | The project for the query. |
projection
Fields names returned by the query.
Type | Description |
sequence of string | Names of fields in query results. |
Methods
add_filter
add_filter(property_name, operator, value)
Filter the query based on a property name, operator and a value.
Expressions take the form of::
.add_filter('
where property is a property stored on the entity in the datastore
and operator is one of OPERATORS
(ie, =
, <
, <=
, >
, >=
):
.. testsetup:: query-filter
import uuid
from google.cloud import datastore
client = datastore.Client()
.. doctest:: query-filter
>>> query = client.query(kind='Person')
>>> query = query.add_filter('name', '=', 'James')
>>> query = query.add_filter('age', '>', 50)
Name | Description |
property_name |
str
A property name. |
operator |
str
One of |
value |
`int`, `str`, `bool`, `float`, `NoneType`, `datetime.datetime`, Key
The value to filter on. |
Type | Description |
`ValueError | if ``operation`` is not one of the specified values, or if a filter names ``'__key__'`` but passes an invalid value (a key is required). |
Type | Description |
Query | A query object. |
fetch
fetch(
limit=None,
offset=0,
start_cursor=None,
end_cursor=None,
client=None,
eventual=False,
retry=None,
timeout=None,
)
Execute the Query; return an iterator for the matching entities.
For example:
.. testsetup:: query-fetch
import uuid
from google.cloud import datastore
unique = str(uuid.uuid4())[0:8]
client = datastore.Client(namespace='ns{}'.format(unique))
.. doctest:: query-fetch
>>> andy = datastore.Entity(client.key('Person', 1234))
>>> andy['name'] = 'Andy'
>>> sally = datastore.Entity(client.key('Person', 2345))
>>> sally['name'] = 'Sally'
>>> bobby = datastore.Entity(client.key('Person', 3456))
>>> bobby['name'] = 'Bobby'
>>> client.put_multi([andy, sally, bobby])
>>> query = client.query(kind='Person')
>>> result = list(query.add_filter('name', '=', 'Sally').fetch())
>>> result
[<Entity('Person', 2345) {'name': 'Sally'}>]
.. testcleanup:: query-fetch
client.delete(andy.key)
client.delete(sally.key)
client.delete(bobby.key)
Name | Description |
limit |
int
(Optional) limit passed through to the iterator. |
offset |
int
(Optional) offset passed through to the iterator. |
start_cursor |
bytes
(Optional) cursor passed through to the iterator. |
end_cursor |
bytes
(Optional) cursor passed through to the iterator. |
client |
Client
(Optional) client used to connect to datastore. If not supplied, uses the query's value. |
eventual |
bool
(Optional) Defaults to strongly consistent (False). Setting True will use eventual consistency, but cannot be used inside a transaction or will raise ValueError. |
retry |
`google.api_core.retry.Retry`
A retry object used to retry requests. If |
timeout |
float
Time, in seconds, to wait for the request to complete. Note that if |
Type | Description |
`Iterator` | The iterator for the query. |
key_filter
key_filter(key, operator="=")
Filter on a key.
Name | Description |
key |
Key
The key to filter on. |
operator |
str
(Optional) One of |
keys_only
keys_only()
Set the projection to include only keys.