Class DirectRow (2.26.0)

DirectRow(row_key, table=None)

Google Cloud Bigtable Row for sending "direct" mutations.

These mutations directly set or delete cell contents:

  • set_cell
  • delete
  • delete_cell
  • delete_cells

These methods can be used directly::

row = table.row(b'row-key1') row.set_cell(u'fam', b'col1', b'cell-val') row.delete_cell(u'fam', b'col2')

Parameters

Name Description
row_key bytes

The key for the current row.

table Table

(Optional) The table that owns the row. This is used for the :meth: commit only. Alternatively, DirectRows can be persisted via mutate_rows.

Properties

row_key

Row key.

For example:

.. literalinclude:: snippets_table.py :start-after: [START bigtable_api_row_row_key] :end-before: [END bigtable_api_row_row_key] :dedent: 4

Returns
Type Description
bytes The key for the current row.

table

Row table.

For example:

.. literalinclude:: snippets_table.py :start-after: [START bigtable_api_row_table] :end-before: [END bigtable_api_row_table] :dedent: 4

Returns
Type Description
table: Table table: The table that owns the row.

Methods

clear

clear()

Removes all currently accumulated mutations on the current row.

For example:

.. literalinclude:: snippets_table.py :start-after: [START bigtable_api_row_clear] :end-before: [END bigtable_api_row_clear] :dedent: 4

commit

commit()

Makes a MutateRow API request.

If no mutations have been created in the row, no request is made.

Mutations are applied atomically and in order, meaning that earlier mutations can be masked / negated by later ones. Cells already present in the row are left unchanged unless explicitly changed by a mutation.

After committing the accumulated mutations, resets the local mutations to an empty list.

For example:

.. literalinclude:: snippets_table.py :start-after: [START bigtable_api_row_commit] :end-before: [END bigtable_api_row_commit] :dedent: 4

Exceptions
Type Description
`.table.TooManyMutationsError if the number of mutations is greater than 100,000.
Returns
Type Description
google.rpc.status_pb2.Status A response status (google.rpc.status_pb2.Status) representing success or failure of the row committed.

delete

delete()

Deletes this row from the table.

.. literalinclude:: snippets_table.py :start-after: [START bigtable_api_row_delete] :end-before: [END bigtable_api_row_delete] :dedent: 4

delete_cell

delete_cell(column_family_id, column, time_range=None)

Deletes cell in this row.

.. literalinclude:: snippets_table.py :start-after: [START bigtable_api_row_delete_cell] :end-before: [END bigtable_api_row_delete_cell] :dedent: 4

Parameters
Name Description
column_family_id str

The column family that contains the column or columns with cells being deleted. Must be of the form <code>_a-zA-Z0-9][-_.a-zA-Z0-9]</code>*.

column bytes

The column within the column family that will have a cell deleted.

time_range TimestampRange

(Optional) The range of time within which cells should be deleted.

delete_cells

delete_cells(column_family_id, columns, time_range=None)

Deletes cells in this row.

.. literalinclude:: snippets_table.py :start-after: [START bigtable_api_row_delete_cells] :end-before: [END bigtable_api_row_delete_cells] :dedent: 4

Parameters
Name Description
column_family_id str

The column family that contains the column or columns with cells being deleted. Must be of the form <code>_a-zA-Z0-9][-_.a-zA-Z0-9]</code>*.

columns list of str / unicode , or object

The columns within the column family that will have cells deleted. If ALL_COLUMNS is used then the entire column family will be deleted from the row.

time_range TimestampRange

(Optional) The range of time within which cells should be deleted.

get_mutations_size

get_mutations_size()

Gets the total mutations size for current row

For example:

.. literalinclude:: snippets_table.py :start-after: [START bigtable_api_row_get_mutations_size] :end-before: [END bigtable_api_row_get_mutations_size] :dedent: 4

set_cell

set_cell(column_family_id, column, value, timestamp=None)

Sets a value in this row.

The cell is determined by the row_key of this DirectRow and the column. The column must be in an existing .ColumnFamily (as determined by column_family_id).

.. literalinclude:: snippets_table.py :start-after: [START bigtable_api_row_set_cell] :end-before: [END bigtable_api_row_set_cell] :dedent: 4

Parameters
Name Description
column_family_id str

The column family that contains the column. Must be of the form <code>_a-zA-Z0-9][-_.a-zA-Z0-9]</code>*.

column bytes

The column within the column family where the cell is located.

value bytes or int

The value to set in the cell. If an integer is used, will be interpreted as a 64-bit big-endian signed integer (8 bytes).

timestamp datetime.datetime

(Optional) The timestamp of the operation.