Entities
Class for representing a single entity in the Cloud Datastore.
class google.cloud.datastore.entity.Entity(key=None, exclude_from_indexes=())
Bases: dict
Entities are akin to rows in a relational database
An entity storing the actual instance of data.
Each entity is officially represented with a
Key
, however it is possible that
you might create an entity with only a partial key (that is, a key
with a kind, and possibly a parent, but without an ID). In such a
case, the datastore service will automatically assign an ID to the
partial key.
Entities in this API act like dictionaries with extras built in that allow you to delete or persist the data stored on the entity.
Entities are mutable and act like a subclass of a dictionary. This means you could take an existing entity and change the key to duplicate the object.
Use get()
to retrieve an
existing entity:
>>> key = client.key('EntityKind', 1234)
>>> client.get(key)
<Entity('EntityKind', 1234) {'property': 'value'}>
You can the set values on the entity just like you would on any other dictionary.
>>> entity['age'] = 20
>>> entity['name'] = 'JJ'
However, not all types are allowed as a value for a Google Cloud Datastore entity. The following basic types are supported by the API:
Key
int
(as well aslong
in Python 2)unicode
(calledstr
in Python 3)bytes
(calledstr
in Python 2)GeoPoint
In addition, three container types are supported:
Each entry in a list must be one of the value types (basic or
container) and each value in an
Entity
must as well. In
this case an Entity
as a
container acts as a dict
, but also has the special annotations
of key
and exclude_from_indexes
.
And you can treat an entity like a regular Python dictionary:
>>> sorted(entity.keys())
['age', 'name']
>>> sorted(entity.items())
[('age', 20), ('name', 'JJ')]
NOTE: When saving an entity to the backend, values which are “text”
(unicode
in Python2, str
in Python3) will be saved using
the ‘text_value’ field, after being encoded to UTF-8. When
retrieved from the back-end, such values will be decoded to “text”
again. Values which are “bytes” (str
in Python2, bytes
in
Python3), will be saved using the ‘blob_value’ field, without
any decoding / encoding step.
Parameters
key (
google.cloud.datastore.key.Key
) – Optional key to be set on entity.exclude_from_indexes (tuple of string) – Names of fields whose values are not to be indexed for this entity.
_eq_(other)
Compare two entities for equality.
Entities compare equal if their keys compare equal and their properties compare equal.
Return type
Returns
True if the entities compare equal, else False.
_ne_(other)
Compare two entities for inequality.
Entities compare equal if their keys compare equal and their properties compare equal.
Return type
Returns
False if the entities compare equal, else True.
exclude_from_indexes()
Names of fields which are not to be indexed for this entity.
property id()
Get the ID of the current entity.
NOTE: This relies entirely on the google.cloud.datastore.key.Key
set on the entity. That means that we’re not storing the ID
of the entity at all, just the properties and a pointer to a
Key which knows its ID.
property kind()
Get the kind of the current entity.
NOTE: This relies entirely on the google.cloud.datastore.key.Key
set on the entity. That means that we’re not storing the kind
of the entity at all, just the properties and a pointer to a
Key which knows its Kind.