Batch
(
client
)
An abstraction representing a collected group of updates / deletes.
Used to build up a bulk mutation.
For example, the following snippet of code will put the two save
operations and the delete
operation into the same mutation, and send
them to the server in a single API request:
.. testsetup:: batch
import uuid
from google.cloud import datastore
unique = str(uuid.uuid4())[0:8]
client = datastore
. Client
(namespace='ns{}'.format(unique))
.. doctest:: batch
>>> entity1 = datastore.Entity(client.key('EntityKind', 1234))
>>> entity2 = datastore.Entity(client.key('EntityKind', 2345))
>>> key3 = client.key('EntityKind', 3456)
>>> batch = client.batch()
>>> batch.begin()
>>> batch.put(entity1)
>>> batch.put(entity2)
>>> batch.delete(key3)
>>> batch.commit()
You can also use a batch as a context manager, in which case commit
will be called automatically if its block exits without
raising an exception:
.. doctest:: batch
>>> with client.batch() as batch:
... batch.put(entity1)
... batch.put(entity2)
... batch.delete(key3)
By default, no updates will be sent if the block exits with an error:
.. doctest:: batch
>>> def do_some_work(batch):
... return
>>> with client.batch() as batch:
... do_some_work(batch)
... raise Exception() # rolls back
Traceback (most recent call last):
...
Exception
.. testcleanup:: txn
with client.batch() as batch:
batch.delete(client.key('EntityKind', 1234))
batch.delete(client.key('EntityKind', 2345))
Properties
mutations
Getter for the changes accumulated by this batch.
Every batch is committed with a single commit request containing all
the work to be done as mutations. Inside a batch, calling put
with an entity, or delete
with a key, builds up the request by
adding a new mutation. This getter returns the protobuf that has been
built-up so far.
iterable
.datastore_pb2.Mutation
protobufs to be sent in the commit request.namespace
Getter for namespace in which the batch will run.
str
project
Getter for project in which the batch will run.
str
Methods
begin
begin
()
Begins a batch.
This method is called automatically when entering a with statement, however it can be called explicitly if you don't want to use a context manager.
Overridden by xref_Transaction.
`ValueError
commit
commit
(
retry
=
None
,
timeout
=
None
)
Commits the batch.
This is called automatically upon exiting a with statement, however it can be called explicitly if you don't want to use a context manager.
retry
google.api_core.retry.Retry
A retry object used to retry requests. If None
is specified, requests will be retried using a default configuration.
timeout
float
Time, in seconds, to wait for the request to complete. Note that if retry
is specified, the timeout applies to each individual attempt.
`exceptions.ValueError
current
current
()
Return the topmost batch / transaction, or None.
delete
delete
(
key
)
Remember a key to be deleted during commit
.
`exceptions.ValueError
project
does not match ours.put
put
(
entity
)
Remember an entity's state to be saved during commit
.
commit
sends it as
an insert
mutation and the key is completed. On return,
the key for the entity
passed in is updated to match the key ID
assigned by the server.`exceptions.ValueError
project
does not match ours.rollback
rollback
()
Rolls back the current batch.
Marks the batch as aborted (can't be used again).
Overridden by xref_Transaction.
`exceptions.ValueError