-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
64 changed files
with
12,402 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
Batch API | ||
========= | ||
|
||
.. automodule:: google.cloud.spanner.batch | ||
:members: | ||
:show-inheritance: | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,179 @@ | ||
Batching Modifications | ||
###################### | ||
|
||
A :class:`~google.cloud.spanner.batch.Batch` represents a set of data | ||
modification operations to be performed on tables in a dataset. Use of a | ||
``Batch`` does not require creating an explicit | ||
:class:`~google.cloud.spanner.snapshot.Snapshot` or | ||
:class:`~google.cloud.spanner.transaction.Transaction`. Until | ||
:meth:`~google.cloud.spanner.batch.Batch.commit` is called on a ``Batch``, | ||
no changes are propagated to the back-end. | ||
|
||
|
||
Starting a Batch | ||
---------------- | ||
|
||
.. code:: python | ||
batch = session.batch() | ||
Inserting records using a Batch | ||
------------------------------- | ||
|
||
:meth:`Batch.insert` adds one or more new records to a table. Fails if | ||
any of the records already exists. | ||
|
||
.. code:: python | ||
batch.insert( | ||
'citizens', columns=['email', 'first_name', 'last_name', 'age'], | ||
values=[ | ||
['[email protected]', 'Phred', 'Phlyntstone', 32], | ||
['[email protected]', 'Bharney', 'Rhubble', 31], | ||
]) | ||
.. note:: | ||
|
||
Ensure that data being sent for ``STRING`` columns uses a text string | ||
(``str`` in Python 3; ``unicode`` in Python 2). | ||
|
||
Additionally, if you are writing data intended for a ``BYTES`` column, you | ||
must base64 encode it. | ||
|
||
|
||
Update records using a Batch | ||
------------------------------- | ||
|
||
:meth:`Batch.update` updates one or more existing records in a table. Fails | ||
if any of the records does not already exist. | ||
|
||
.. code:: python | ||
batch.update( | ||
'citizens', columns=['email', 'age'], | ||
values=[ | ||
['[email protected]', 33], | ||
['[email protected]', 32], | ||
]) | ||
.. note:: | ||
|
||
Ensure that data being sent for ``STRING`` columns uses a text string | ||
(``str`` in Python 3; ``unicode`` in Python 2). | ||
|
||
Additionally, if you are writing data intended for a ``BYTES`` column, you | ||
must base64 encode it. | ||
|
||
|
||
Insert or update records using a Batch | ||
-------------------------------------- | ||
|
||
:meth:`Batch.insert_or_update` inserts *or* updates one or more records in a | ||
table. Existing rows have values for the supplied columns overwritten; other | ||
column values are preserved. | ||
|
||
.. code:: python | ||
batch.insert_or_update( | ||
'citizens', columns=['email', 'first_name', 'last_name', 'age'], | ||
values=[ | ||
['[email protected]', 'Phred', 'Phlyntstone', 31], | ||
['[email protected]', 'Wylma', 'Phlyntstone', 29], | ||
]) | ||
.. note:: | ||
|
||
Ensure that data being sent for ``STRING`` columns uses a text string | ||
(``str`` in Python 3; ``unicode`` in Python 2). | ||
|
||
Additionally, if you are writing data intended for a ``BYTES`` column, you | ||
must base64 encode it. | ||
|
||
|
||
Replace records using a Batch | ||
----------------------------- | ||
|
||
:meth:`Batch.replace` inserts *or* updates one or more records in a | ||
table. Existing rows have values for the supplied columns overwritten; other | ||
column values are set to null. | ||
|
||
.. code:: python | ||
batch.replace( | ||
'citizens', columns=['email', 'first_name', 'last_name', 'age'], | ||
values=[ | ||
['[email protected]', 'Bharney', 'Rhubble', 30], | ||
['[email protected]', 'Bhettye', 'Rhubble', 30], | ||
]) | ||
.. note:: | ||
|
||
Ensure that data being sent for ``STRING`` columns uses a text string | ||
(``str`` in Python 3; ``unicode`` in Python 2). | ||
|
||
Additionally, if you are writing data intended for a ``BYTES`` column, you | ||
must base64 encode it. | ||
|
||
|
||
Delete records using a Batch | ||
---------------------------- | ||
|
||
:meth:`Batch.delete` removes one or more records from a table. Non-existent | ||
rows do not cause errors. | ||
|
||
.. code:: python | ||
batch.delete('citizens', | ||
keyset['[email protected]', '[email protected]']) | ||
Commit changes for a Batch | ||
-------------------------- | ||
|
||
After describing the modifications to be made to table data via the | ||
:meth:`Batch.insert`, :meth:`Batch.update`, :meth:`Batch.insert_or_update`, | ||
:meth:`Batch.replace`, and :meth:`Batch.delete` methods above, send them to | ||
the back-end by calling :meth:`Batch.commit`, which makes the ``Commit`` | ||
API call. | ||
|
||
.. code:: python | ||
batch.commit() | ||
Use a Batch as a Context Manager | ||
-------------------------------- | ||
|
||
Rather than calling :meth:`Batch.commit` manually, you can use the | ||
:class:`Batch` instance as a context manager, and have it called automatically | ||
if the ``with`` block exits without raising an exception. | ||
|
||
.. code:: python | ||
with session.batch() as batch: | ||
batch.insert( | ||
'citizens', columns=['email', 'first_name', 'last_name', 'age'], | ||
values=[ | ||
['[email protected]', 'Phred', 'Phlyntstone', 32], | ||
['[email protected]', 'Bharney', 'Rhubble', 31], | ||
]) | ||
batch.update( | ||
'citizens', columns=['email', 'age'], | ||
values=[ | ||
['[email protected]', 33], | ||
['[email protected]', 32], | ||
]) | ||
... | ||
batch.delete('citizens', | ||
keyset['[email protected]', '[email protected]']) | ||
Next Step | ||
--------- | ||
|
||
Next, learn about :doc:`spanner-snapshot-usage`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
Spanner Client | ||
============== | ||
|
||
.. automodule:: google.cloud.spanner.client | ||
:members: | ||
:show-inheritance: | ||
|
Oops, something went wrong.