A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://cloud.google.com/python/docs/reference/datastore/latest/transactions below:

Python client library | Google Cloud

Transactions

Create / interact with Google Cloud Datastore transactions.

class google.cloud.datastore.transaction.Transaction(client, read_only=False, read_time=None, begin_later=False)

Bases: google.cloud.datastore.batch.Batch

An abstraction representing datastore Transactions.

Transactions can be used to build up a bulk mutation and ensure all or none succeed (transactionally).

For example, the following snippet of code will put the two save operations (either insert or upsert) into the same mutation, and execute those within a transaction:

>>> entity1 = datastore.Entity(client.key('EntityKind', 1234))
>>> entity2 = datastore.Entity(client.key('EntityKind', 2345))
>>> with client.transaction():
...     client.put_multi([entity1, entity2])

Because it derives from Batch, Transaction also provides put() and delete() methods:

>>> with client.transaction() as xact:
...     xact.put(entity1)
...     xact.delete(entity2.key)

By default, the transaction is rolled back if the transaction block exits with an error:

>>> def do_some_work():
...    return
>>> class SomeException(Exception):
...    pass
>>> with client.transaction():
...     do_some_work()
...     raise SomeException  # rolls back
Traceback (most recent call last):
  ...
SomeException

If the transaction block exits without an exception, it will commit by default.

WARNING: > Inside a transaction, automatically assigned IDs for

entities will not be available at save time! That means, if you try:

>>> with client.transaction():
...     thing1 = datastore.Entity(key=client.key('Thing'))
...     client.put(thing1)

thing1 won’t have a complete key until the transaction is committed.

Once you exit the transaction (or call commit()), the automatically generated ID will be assigned to the entity:

>>> with client.transaction():
...     thing2 = datastore.Entity(key=client.key('Thing'))
...     client.put(thing2)
...     print(thing2.key.is_partial)  # There is no ID on this key.
...
True
>>> print(thing2.key.is_partial)  # There *is* an ID.
False

If you don’t want to use the context manager you can initialize a transaction manually:

>>> transaction = client.transaction()
>>> transaction.begin()
>>>
>>> thing3 = datastore.Entity(key=client.key('Thing'))
>>> transaction.put(thing3)
>>>
>>> transaction.commit()
begin(retry=None, timeout=None)

Begins a transaction.

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.

commit(retry=None, timeout=None)

Commits the transaction.

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.

This method has necessary side-effects:

current()

Return the topmost transaction.

NOTE: If the topmost element on the stack is not a transaction, returns None.

property database()

Getter for database in which the batch will run.

delete(key)

Remember a key to be deleted during commit().

property id()

Getter for the transaction ID.

property 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.

property namespace()

Getter for namespace in which the batch will run.

property project()

Getter for project in which the batch will run.

put(entity)

Adds an entity to be committed.

Ensures the transaction is not marked readonly. Please see documentation at put()

rollback(retry=None, timeout=None)

Rolls back the current transaction.

This method has necessary side-effects:


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4