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/spanner/latest/snapshot-usage below:

Python client library | Google Cloud

Stay organized with collections Save and categorize content based on your preferences.

Read-only Transactions via Snapshots

A Snapshot represents a read-only transaction: when multiple read operations are performed via a Snapshot, the results are consistent as of a particular point in time.

Beginning a Snapshot

To begin using a snapshot using the default “bound” (which is “strong”), meaning all reads are performed at a timestamp where all previously-committed transactions are visible:

with database.snapshot() as snapshot:
    ...

You can also specify a weaker bound, which can either be to perform all reads as of a given timestamp:

import datetime
TIMESTAMP = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc)

with database.snapshot(read_timestamp=TIMESTAMP) as snapshot:
    ...

or as of a given duration in the past:

import datetime
DURATION = datetime.timedelta(seconds=5)

with database.snapshot(exact_staleness=DURATION) as snapshot:
    ...
Single Use and Multiple Use Snapshots

In the context of read only transactions, read and execute_sql methods can be used multiple times if you specify multi_use=True in the constructor of the snapshot. However, multi_use=True is incompatible with either max_staleness and/or min_read_timestamp.

Otherwise multi_use defaults to False and the snapshot cannot be reused.

with database.snapshot(multi_use=True) as snapshot:
    ...

begin() can only be used on a snapshot with multi_use=True. In which case it is also necessary to call if you need to have multiple pending operations.

Read Table Data

To read data for selected rows from a table in the database, call read() which will return all rows specified in keyset, or fail if the result set is too large,

with database.snapshot() as snapshot:
    result = snapshot.read(
        table='table-name', columns=['first_name', 'last_name', 'age'],
        keyset=spanner.KeySet([['phred@example.com'], ['bharney@example.com']]))

    for row in result:
        print(row)

NOTE: Perform all iterations within the context of the with database.snapshot() block.

Execute a SQL Select Statement

To read data from tables in the database using a query, call execute_sql() which will return all rows matching the query, or fail if the result set is too large,

with database.snapshot() as snapshot:
    QUERY = (
        'SELECT e.first_name, e.last_name, p.telephone '
        'FROM employees as e, phones as p '
        'WHERE p.employee_id == e.employee_id')
    result = snapshot.execute_sql(QUERY)

    for row in result:
        print(row)

NOTE: Perform all iteration within the context of the with database.snapshot() block.

Next Step

Next, learn about Read-write Transactions.

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-07-18 UTC.

[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-07-18 UTC."],[],[]]


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