Skip to main content

Cloud Spanner API client library

Project description

Python idiomatic client for Cloud Spanner.

pypi versions

Quick Start

$ pip install --upgrade google-cloud-spanner

For more information on setting up your Python development environment, such as installing pip and virtualenv on your system, please refer to Python Development Environment Setup Guide for Google Cloud Platform.

Authentication

With google-cloud-python we try to make authentication as painless as possible. Check out the Authentication section in our documentation to learn more. You may also find the authentication document shared by all the google-cloud-* libraries to be helpful.

Using the API

Cloud Spanner is the world’s first fully managed relational database service to offer both strong consistency and horizontal scalability for mission-critical online transaction processing (OLTP) applications. With Cloud Spanner you enjoy all the traditional benefits of a relational database; but unlike any other relational database service, Cloud Spanner scales horizontally to hundreds or thousands of servers to handle the biggest transactional workloads. (About Cloud Spanner)

Executing Arbitrary SQL in a Transaction

Generally, to work with Cloud Spanner, you will want a transaction. The preferred mechanism for this is to create a single function, which executes as a callback to database.run_in_transaction:

# First, define the function that represents a single "unit of work"
# that should be run within the transaction.
def update_anniversary(transaction, person_id, unix_timestamp):
    # The query itself is just a string.
    #
    # The use of @parameters is recommended rather than doing your
    # own string interpolation; this provides protections against
    # SQL injection attacks.
    query = """SELECT anniversary FROM people
        WHERE id = @person_id"""

    # When executing the SQL statement, the query and parameters are sent
    # as separate arguments. When using parameters, you must specify
    # both the parameters themselves and their types.
    row = transaction.execute_sql(
        query=query,
        params={'person_id': person_id},
        param_types={
            'person_id': types.INT64_PARAM_TYPE,
        },
    ).one()

    # Now perform an update on the data.
    old_anniversary = row[0]
    new_anniversary = _compute_anniversary(old_anniversary, years)
    transaction.update(
        'people',
        ['person_id', 'anniversary'],
        [person_id, new_anniversary],
    )

# Actually run the `update_anniversary` function in a transaction.
database.run_in_transaction(update_anniversary,
    person_id=42,
    unix_timestamp=1335020400,
)

Select records using a Transaction

Once you have a transaction object (such as the first argument sent to run_in_transaction), reading data is easy:

# Define a SELECT query.
query = """SELECT e.first_name, e.last_name, p.telephone
    FROM employees as e, phones as p
    WHERE p.employee_id == e.employee_id"""

# Execute the query and return results.
result = transaction.execute_sql(query)
for row in result.rows:
    print(row)

Insert records using a Transaction

To add one or more records to a table, use insert:

transaction.insert(
    'citizens',
    columns=['email', 'first_name', 'last_name', 'age'],
    values=[
        ['phred@exammple.com', 'Phred', 'Phlyntstone', 32],
        ['bharney@example.com', 'Bharney', 'Rhubble', 31],
    ],
)

Update records using a Transaction

Transaction.update updates one or more existing records in a table. Fails if any of the records does not already exist.

transaction.update(
    'citizens',
    columns=['email', 'age'],
    values=[
        ['phred@exammple.com', 33],
        ['bharney@example.com', 32],
    ],
)

Learn More

See the google-cloud-python API Cloud Spanner documentation to learn how to connect to Cloud Spanner using this Client Library.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

google-cloud-spanner-1.5.0.tar.gz (163.7 kB view details)

Uploaded Source

Built Distribution

google_cloud_spanner-1.5.0-py2.py3-none-any.whl (139.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file google-cloud-spanner-1.5.0.tar.gz.

File metadata

  • Download URL: google-cloud-spanner-1.5.0.tar.gz
  • Upload date:
  • Size: 163.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.0

File hashes

Hashes for google-cloud-spanner-1.5.0.tar.gz
Algorithm Hash digest
SHA256 010ad63dbed230d7c393d25b2bbba3392e4af1715bba8fe0366a683f5a78ee4d
MD5 15a8dab287bbebc26698d5f60c93695b
BLAKE2b-256 f9295cf08ad428130494798dd07e06c26a77987f4fcc12b2f360281c0c637313

See more details on using hashes here.

Provenance

File details

Details for the file google_cloud_spanner-1.5.0-py2.py3-none-any.whl.

File metadata

  • Download URL: google_cloud_spanner-1.5.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 139.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.0

File hashes

Hashes for google_cloud_spanner-1.5.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 320155f1227275599a116f922ac0bba6e6bc9f335aac25dadd6ae1867a55f7d2
MD5 ec0d969dfce03e28404c10b2b6e10144
BLAKE2b-256 d2f0d6dbb10b7d56d5663ad3766fe03004c7fea98ea9e2bad1b7d345d56b378d

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page