Snapshot API¶
Model a set of read-only queries to a database as a snapshot.
- class google.cloud.spanner_v1.snapshot.Snapshot(session, read_timestamp=None, min_read_timestamp=None, max_staleness=None, exact_staleness=None, multi_use=False, transaction_id=None)[source]¶
Allow a set of reads / SQL statements with shared staleness.
If no options are passed, reads will use the
strong
model, reading at a timestamp where all previously committed transactions are visible.- Parameters
session (
Session
) – The session used to perform the commit.read_timestamp (
datetime.datetime
) – Execute all reads at the given timestamp.min_read_timestamp (
datetime.datetime
) – Execute all reads at a timestamp >=min_read_timestamp
.max_staleness (
datetime.timedelta
) – Read data at a timestamp >= NOW -max_staleness
seconds.exact_staleness (
datetime.timedelta
) – Execute all reads at a timestamp that isexact_staleness
old.multi_use (
bool
) – If true, multipleread()
/execute_sql()
calls can be performed with the snapshot in the context of a read-only transaction, used to ensure isolation / consistency. Incompatible withmax_staleness
andmin_read_timestamp
.
- begin()[source]¶
Begin a read-only transaction on the database.
- Return type
- Returns
the ID for the newly-begun transaction.
- Raises
ValueError – if the transaction is already begun, committed, or rolled back.
- execute_sql(sql, params=None, param_types=None, query_mode=None, query_options=None, request_options=None, partition=None, retry=_MethodDefault._DEFAULT_VALUE, timeout=_MethodDefault._DEFAULT_VALUE, data_boost_enabled=False, directed_read_options=None, column_info=None)¶
Perform an
ExecuteStreamingSql
API request.- Parameters
sql (str) – SQL query statement
params (dict, {str -> column value}) – values for parameter replacement. Keys must match the names used in
sql
.param_types (dict[str -> Union[dict, .types.Type]]) – (Optional) maps explicit types for one or more param values; required if parameters are passed.
query_mode (
QueryMode
) – Mode governing return of results / query plan. See: QueryMode.query_options – (Optional) Query optimizer configuration to use for the given query. If a dict is provided, it must be of the same form as the protobuf message
QueryOptions
request_options (
google.cloud.spanner_v1.types.RequestOptions
) – (Optional) Common options for this request. If a dict is provided, it must be of the same form as the protobuf messageRequestOptions
.partition (bytes) – (Optional) one of the partition tokens returned from
partition_query()
.retry (
Retry
) – (Optional) The retry settings for this request.timeout (float) – (Optional) The timeout for this request.
data_boost_enabled – (Optional) If this is for a partitioned query and this field is set
true
, the request will be executed via offline access. If the field is set totrue
but the request does not setpartition_token
, the API will return anINVALID_ARGUMENT
error.directed_read_options (
DirectedReadOptions
ordict
) – (Optional) Request level option used to set the directed_read_options for all ReadRequests and ExecuteSqlRequests that indicates which replicas or regions should be used for non-transactional reads or queries.column_info (dict) – (Optional) dict of mapping between column names and additional column information. An object where column names as keys and custom objects as corresponding values for deserialization. It’s specifically useful for data types like protobuf where deserialization logic is on user-specific code. When provided, the custom object enables deserialization of backend-received column data. If not provided, data remains serialized as bytes for Proto Messages and integer for Proto Enums.
- Return type
- Returns
a result set instance which can be used to consume rows.
- Raises
ValueError – for reuse of single-use snapshots, or if a transaction ID is already pending for multiple-use snapshots.
- partition_query(sql, params=None, param_types=None, partition_size_bytes=None, max_partitions=None, *, retry=_MethodDefault._DEFAULT_VALUE, timeout=_MethodDefault._DEFAULT_VALUE)¶
Perform a
PartitionQuery
API request.- Parameters
sql (str) – SQL query statement
params (dict, {str -> column value}) – values for parameter replacement. Keys must match the names used in
sql
.param_types (dict[str -> Union[dict, .types.Type]]) – (Optional) maps explicit types for one or more param values; required if parameters are passed.
partition_size_bytes (int) – (Optional) desired size for each partition generated. The service uses this as a hint, the actual partition size may differ.
max_partitions (int) – (Optional) desired maximum number of partitions generated. The service uses this as a hint, the actual number of partitions may differ.
retry (
Retry
) – (Optional) The retry settings for this request.timeout (float) – (Optional) The timeout for this request.
- Return type
iterable of bytes
- Returns
a sequence of partition tokens
- Raises
ValueError – for single-use snapshots, or if a transaction ID is already associated with the snapshot.
- partition_read(table, columns, keyset, index='', partition_size_bytes=None, max_partitions=None, *, retry=_MethodDefault._DEFAULT_VALUE, timeout=_MethodDefault._DEFAULT_VALUE)¶
Perform a
PartitionRead
API request for rows in a table.- Parameters
table (str) – name of the table from which to fetch data
columns (list of str) – names of columns to be retrieved
keyset (
KeySet
) – keys / ranges identifying rows to be retrievedindex (str) – (Optional) name of index to use, rather than the table’s primary key
partition_size_bytes (int) – (Optional) desired size for each partition generated. The service uses this as a hint, the actual partition size may differ.
max_partitions (int) – (Optional) desired maximum number of partitions generated. The service uses this as a hint, the actual number of partitions may differ.
retry (
Retry
) – (Optional) The retry settings for this request.timeout (float) – (Optional) The timeout for this request.
- Return type
iterable of bytes
- Returns
a sequence of partition tokens
- Raises
ValueError – for single-use snapshots, or if a transaction ID is already associated with the snapshot.
- read(table, columns, keyset, index='', limit=0, partition=None, request_options=None, data_boost_enabled=False, directed_read_options=None, *, retry=_MethodDefault._DEFAULT_VALUE, timeout=_MethodDefault._DEFAULT_VALUE, column_info=None)¶
Perform a
StreamingRead
API request for rows in a table.- Parameters
table (str) – name of the table from which to fetch data
columns (list of str) – names of columns to be retrieved
keyset (
KeySet
) – keys / ranges identifying rows to be retrievedindex (str) – (Optional) name of index to use, rather than the table’s primary key
limit (int) – (Optional) maximum number of rows to return. Incompatible with
partition
.partition (bytes) – (Optional) one of the partition tokens returned from
partition_read()
. Incompatible withlimit
.request_options (
google.cloud.spanner_v1.types.RequestOptions
) – (Optional) Common options for this request. If a dict is provided, it must be of the same form as the protobuf messageRequestOptions
. Please note, the transactionTag setting will be ignored for snapshot as it’s not supported for read-only transactions.retry (
Retry
) – (Optional) The retry settings for this request.timeout (float) – (Optional) The timeout for this request.
data_boost_enabled – (Optional) If this is for a partitioned read and this field is set
true
, the request will be executed via offline access. If the field is set totrue
but the request does not setpartition_token
, the API will return anINVALID_ARGUMENT
error.directed_read_options (
DirectedReadOptions
ordict
) – (Optional) Request level option used to set the directed_read_options for all ReadRequests and ExecuteSqlRequests that indicates which replicas or regions should be used for non-transactional reads or queries.column_info (dict) – (Optional) dict of mapping between column names and additional column information. An object where column names as keys and custom objects as corresponding values for deserialization. It’s specifically useful for data types like protobuf where deserialization logic is on user-specific code. When provided, the custom object enables deserialization of backend-received column data. If not provided, data remains serialized as bytes for Proto Messages and integer for Proto Enums.
- Return type
- Returns
a result set instance which can be used to consume rows.
- Raises
ValueError – for reuse of single-use snapshots, or if a transaction ID is already pending for multiple-use snapshots.