# Module database (3.68.0)

3.68.0 (latest) 3.67.0 3.66.0 3.65.0 3.64.0 3.63.0 3.62.0 3.61.0 3.60.0 3.59.0 3.58.0 3.57.0 3.56.0 3.55.0 3.54.0 3.53.0 3.52.0 3.51.0 3.50.1 3.46.0 3.45.0 3.44.0 3.43.0 3.42.0 3.41.0 3.40.1 3.39.0 3.38.0 3.37.0 3.36.0 3.35.1 3.34.0 3.33.0 3.32.0 3.31.0 3.30.0 3.29.0 3.28.0 3.27.1 3.26.0 3.25.0 3.24.0 3.23.0 3.22.2 3.21.0 3.20.0 3.19.0 3.18.0 3.17.0 3.16.0 3.15.1 3.14.1 3.13.0 3.12.1 3.11.1 3.10.0 3.9.0 3.8.0 3.7.0 3.6.0 3.5.0 3.4.0 3.3.0 3.2.0 3.1.0 3.0.0 2.1.1 2.0.0 1.19.3 1.18.0 1.17.1 1.16.0 1.15.1 1.14.0 1.13.0 1.12.0 1.11.0 1.10.0 User-friendly container for Cloud Spanner Database.

## Classes

### [BatchCheckout](https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.database.BatchCheckout)

    BatchCheckout(
        database,
        request_options=None,
        max_commit_delay=None,
        exclude_txn_from_change_streams=False,
        isolation_level=IsolationLevel.ISOLATION_LEVEL_UNSPECIFIED,
        read_lock_mode=ReadLockMode.READ_LOCK_MODE_UNSPECIFIED,
        client_context=None,
        **kw
    )

Context manager for using a batch from a database.

Inside the context manager, checks out a session from the database,
creates a batch from it, making the batch available.

Caller must *not* use the batch to perform API requests outside the scope
of the context manager.

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `database` | `https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.database.Database` database to use |
| `request_options` | `https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.types.RequestOptions` (Optional) Common options for the commit request. If a dict is provided, it must be of the same form as the protobuf message [RequestOptions](https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.types.RequestOptions). |
| `max_commit_delay` | `` `datetime.timedelta` `` (Optional) The amount of latency this request is willing to incur in order to improve throughput. |

### [BatchSnapshot](https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.database.BatchSnapshot)

    BatchSnapshot(
        database,
        read_timestamp=None,
        exact_staleness=None,
        session_id=None,
        transaction_id=None,
        client_context=None,
    )

Wrapper for generating and processing read / query batches.

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `database` | `https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.database.Database` database to use |
| `read_timestamp` | `` `datetime.datetime` `` Execute all reads at the given timestamp. |
| `exact_staleness` | `` `datetime.timedelta` `` Execute all reads at a timestamp that is `exact_staleness` old. |

### [Database](https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.database.Database)

    Database(
        database_id,
        instance,
        ddl_statements=(),
        pool=None,
        logger=None,
        encryption_config=None,
        database_dialect=DatabaseDialect.DATABASE_DIALECT_UNSPECIFIED,
        database_role=None,
        enable_drop_protection=False,
        proto_descriptors=None,
    )

Representation of a Cloud Spanner Database.

We can use a `Database` to:

- `create` the database
- `reload` the database
- `update` the database
- `drop` the database

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `database_id` | `str` The ID of the database. |
| `instance` | `https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.instance.Instance` The instance that owns the database. |
| `ddl_statements` | `list of string` (Optional) DDL statements, excluding the CREATE DATABASE statement. |
| `pool` | `concrete subclass of https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.pool.AbstractSessionPool.` (Optional) session pool to be used by database. If not passed, the database will construct an instance of [BurstyPool](https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.pool.BurstyPool). |
| `logger` | `` `logging.Logger` `` (Optional) a custom logger that is used if `log_commit_stats` is `True` to log commit statistics. If not passed, a logger will be created when needed that will log the commit statistics to stdout. |
| `encryption_config` | `` https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_admin_database_v1.types.EncryptionConfig or https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_admin_database_v1.types.RestoreDatabaseEncryptionConfig or `dict` `` (Optional) Encryption configuration for the database. If a dict is provided, it must be of the same form as either of the protobuf messages [EncryptionConfig](https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_admin_database_v1.types.EncryptionConfig) or [RestoreDatabaseEncryptionConfig](https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_admin_database_v1.types.RestoreDatabaseEncryptionConfig) |
| `database_dialect` | `https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_admin_database_v1.types.DatabaseDialect` (Optional) database dialect for the database |
| `database_role` | `str or None` (Optional) user-assigned database_role for the session. |
| `enable_drop_protection` | `boolean` (Optional) Represents whether the database has drop protection enabled or not. |
| `proto_descriptors` | `bytes` (Optional) Proto descriptors used by CREATE/ALTER PROTO BUNDLE statements in 'ddl_statements' above. |

### [MutationGroupsCheckout](https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.database.MutationGroupsCheckout)

    MutationGroupsCheckout(database, client_context=None)

Context manager for using mutation groups from a database.

Inside the context manager, checks out a session from the database,
creates mutation groups from it, making the groups available.

Caller must *not* use the object to perform API requests outside the scope
of the context manager.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `database` | `https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.database.Database` database to use |

### [SnapshotCheckout](https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.database.SnapshotCheckout)

    SnapshotCheckout(database, **kw)

Context manager for using a snapshot from a database.

Inside the context manager, checks out a session from the database,
creates a snapshot from it, making the snapshot available.

Caller must *not* use the snapshot to perform API requests outside the
scope of the context manager.

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `database` | `https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.database.Database` database to use |
| `kw` | `dict` Passed through to [Snapshot](https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.snapshot.Snapshot) constructor. |