google-cloud-spanner 3.55.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- google/cloud/spanner.py +47 -0
- google/cloud/spanner_admin_database_v1/__init__.py +146 -0
- google/cloud/spanner_admin_database_v1/gapic_metadata.json +418 -0
- google/cloud/spanner_admin_database_v1/gapic_version.py +16 -0
- google/cloud/spanner_admin_database_v1/py.typed +2 -0
- google/cloud/spanner_admin_database_v1/services/__init__.py +15 -0
- google/cloud/spanner_admin_database_v1/services/database_admin/__init__.py +22 -0
- google/cloud/spanner_admin_database_v1/services/database_admin/async_client.py +4097 -0
- google/cloud/spanner_admin_database_v1/services/database_admin/client.py +4602 -0
- google/cloud/spanner_admin_database_v1/services/database_admin/pagers.py +989 -0
- google/cloud/spanner_admin_database_v1/services/database_admin/transports/__init__.py +38 -0
- google/cloud/spanner_admin_database_v1/services/database_admin/transports/base.py +820 -0
- google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc.py +1303 -0
- google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc_asyncio.py +1688 -0
- google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest.py +6512 -0
- google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest_base.py +1650 -0
- google/cloud/spanner_admin_database_v1/types/__init__.py +144 -0
- google/cloud/spanner_admin_database_v1/types/backup.py +1106 -0
- google/cloud/spanner_admin_database_v1/types/backup_schedule.py +369 -0
- google/cloud/spanner_admin_database_v1/types/common.py +180 -0
- google/cloud/spanner_admin_database_v1/types/spanner_database_admin.py +1303 -0
- google/cloud/spanner_admin_instance_v1/__init__.py +110 -0
- google/cloud/spanner_admin_instance_v1/gapic_metadata.json +343 -0
- google/cloud/spanner_admin_instance_v1/gapic_version.py +16 -0
- google/cloud/spanner_admin_instance_v1/py.typed +2 -0
- google/cloud/spanner_admin_instance_v1/services/__init__.py +15 -0
- google/cloud/spanner_admin_instance_v1/services/instance_admin/__init__.py +22 -0
- google/cloud/spanner_admin_instance_v1/services/instance_admin/async_client.py +3466 -0
- google/cloud/spanner_admin_instance_v1/services/instance_admin/client.py +3881 -0
- google/cloud/spanner_admin_instance_v1/services/instance_admin/pagers.py +856 -0
- google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/__init__.py +38 -0
- google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/base.py +545 -0
- google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc.py +1347 -0
- google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc_asyncio.py +1539 -0
- google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest.py +4834 -0
- google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest_base.py +1198 -0
- google/cloud/spanner_admin_instance_v1/types/__init__.py +104 -0
- google/cloud/spanner_admin_instance_v1/types/common.py +99 -0
- google/cloud/spanner_admin_instance_v1/types/spanner_instance_admin.py +2375 -0
- google/cloud/spanner_dbapi/__init__.py +93 -0
- google/cloud/spanner_dbapi/_helpers.py +113 -0
- google/cloud/spanner_dbapi/batch_dml_executor.py +135 -0
- google/cloud/spanner_dbapi/checksum.py +80 -0
- google/cloud/spanner_dbapi/client_side_statement_executor.py +140 -0
- google/cloud/spanner_dbapi/client_side_statement_parser.py +106 -0
- google/cloud/spanner_dbapi/connection.py +818 -0
- google/cloud/spanner_dbapi/cursor.py +609 -0
- google/cloud/spanner_dbapi/exceptions.py +172 -0
- google/cloud/spanner_dbapi/parse_utils.py +392 -0
- google/cloud/spanner_dbapi/parsed_statement.py +63 -0
- google/cloud/spanner_dbapi/parser.py +258 -0
- google/cloud/spanner_dbapi/partition_helper.py +41 -0
- google/cloud/spanner_dbapi/transaction_helper.py +294 -0
- google/cloud/spanner_dbapi/types.py +106 -0
- google/cloud/spanner_dbapi/utils.py +147 -0
- google/cloud/spanner_dbapi/version.py +20 -0
- google/cloud/spanner_v1/__init__.py +154 -0
- google/cloud/spanner_v1/_helpers.py +751 -0
- google/cloud/spanner_v1/_opentelemetry_tracing.py +165 -0
- google/cloud/spanner_v1/backup.py +397 -0
- google/cloud/spanner_v1/batch.py +433 -0
- google/cloud/spanner_v1/client.py +538 -0
- google/cloud/spanner_v1/data_types.py +350 -0
- google/cloud/spanner_v1/database.py +1968 -0
- google/cloud/spanner_v1/database_sessions_manager.py +249 -0
- google/cloud/spanner_v1/gapic_metadata.json +268 -0
- google/cloud/spanner_v1/gapic_version.py +16 -0
- google/cloud/spanner_v1/instance.py +735 -0
- google/cloud/spanner_v1/keyset.py +193 -0
- google/cloud/spanner_v1/merged_result_set.py +146 -0
- google/cloud/spanner_v1/metrics/constants.py +71 -0
- google/cloud/spanner_v1/metrics/metrics_capture.py +75 -0
- google/cloud/spanner_v1/metrics/metrics_exporter.py +384 -0
- google/cloud/spanner_v1/metrics/metrics_interceptor.py +156 -0
- google/cloud/spanner_v1/metrics/metrics_tracer.py +588 -0
- google/cloud/spanner_v1/metrics/metrics_tracer_factory.py +328 -0
- google/cloud/spanner_v1/metrics/spanner_metrics_tracer_factory.py +172 -0
- google/cloud/spanner_v1/param_types.py +110 -0
- google/cloud/spanner_v1/pool.py +813 -0
- google/cloud/spanner_v1/py.typed +2 -0
- google/cloud/spanner_v1/request_id_header.py +64 -0
- google/cloud/spanner_v1/services/__init__.py +15 -0
- google/cloud/spanner_v1/services/spanner/__init__.py +22 -0
- google/cloud/spanner_v1/services/spanner/async_client.py +2205 -0
- google/cloud/spanner_v1/services/spanner/client.py +2624 -0
- google/cloud/spanner_v1/services/spanner/pagers.py +196 -0
- google/cloud/spanner_v1/services/spanner/transports/__init__.py +38 -0
- google/cloud/spanner_v1/services/spanner/transports/base.py +520 -0
- google/cloud/spanner_v1/services/spanner/transports/grpc.py +911 -0
- google/cloud/spanner_v1/services/spanner/transports/grpc_asyncio.py +1144 -0
- google/cloud/spanner_v1/services/spanner/transports/rest.py +3468 -0
- google/cloud/spanner_v1/services/spanner/transports/rest_base.py +981 -0
- google/cloud/spanner_v1/session.py +631 -0
- google/cloud/spanner_v1/session_options.py +133 -0
- google/cloud/spanner_v1/snapshot.py +1057 -0
- google/cloud/spanner_v1/streamed.py +402 -0
- google/cloud/spanner_v1/table.py +181 -0
- google/cloud/spanner_v1/testing/__init__.py +0 -0
- google/cloud/spanner_v1/testing/database_test.py +121 -0
- google/cloud/spanner_v1/testing/interceptors.py +118 -0
- google/cloud/spanner_v1/testing/mock_database_admin.py +38 -0
- google/cloud/spanner_v1/testing/mock_spanner.py +261 -0
- google/cloud/spanner_v1/testing/spanner_database_admin_pb2_grpc.py +1267 -0
- google/cloud/spanner_v1/testing/spanner_pb2_grpc.py +882 -0
- google/cloud/spanner_v1/transaction.py +747 -0
- google/cloud/spanner_v1/types/__init__.py +118 -0
- google/cloud/spanner_v1/types/commit_response.py +94 -0
- google/cloud/spanner_v1/types/keys.py +248 -0
- google/cloud/spanner_v1/types/mutation.py +201 -0
- google/cloud/spanner_v1/types/query_plan.py +220 -0
- google/cloud/spanner_v1/types/result_set.py +379 -0
- google/cloud/spanner_v1/types/spanner.py +1815 -0
- google/cloud/spanner_v1/types/transaction.py +818 -0
- google/cloud/spanner_v1/types/type.py +288 -0
- google_cloud_spanner-3.55.0.dist-info/LICENSE +202 -0
- google_cloud_spanner-3.55.0.dist-info/METADATA +318 -0
- google_cloud_spanner-3.55.0.dist-info/RECORD +119 -0
- google_cloud_spanner-3.55.0.dist-info/WHEEL +5 -0
- google_cloud_spanner-3.55.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: google-cloud-spanner
|
|
3
|
+
Version: 3.55.0
|
|
4
|
+
Summary: Google Cloud Spanner API client library
|
|
5
|
+
Home-page: https://github.com/googleapis/python-spanner
|
|
6
|
+
Author: Google LLC
|
|
7
|
+
Author-email: googleapis-packages@google.com
|
|
8
|
+
License: Apache 2.0
|
|
9
|
+
Platform: Posix; MacOS X; Windows
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
13
|
+
Classifier: Programming Language :: Python
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.7
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Operating System :: OS Independent
|
|
22
|
+
Classifier: Topic :: Internet
|
|
23
|
+
Requires-Python: >=3.7
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: google-api-core[grpc]!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0,>=1.34.0
|
|
26
|
+
Requires-Dist: google-cloud-core<3.0.0,>=1.4.4
|
|
27
|
+
Requires-Dist: grpc-google-iam-v1<1.0.0,>=0.12.4
|
|
28
|
+
Requires-Dist: proto-plus<2.0.0,>=1.22.0
|
|
29
|
+
Requires-Dist: sqlparse>=0.4.4
|
|
30
|
+
Requires-Dist: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<7.0.0,>=3.20.2
|
|
31
|
+
Requires-Dist: grpc-interceptor>=0.15.4
|
|
32
|
+
Requires-Dist: proto-plus<2.0.0,>=1.22.2; python_version >= "3.11"
|
|
33
|
+
Provides-Extra: libcst
|
|
34
|
+
Requires-Dist: libcst>=0.2.5; extra == "libcst"
|
|
35
|
+
Provides-Extra: tracing
|
|
36
|
+
Requires-Dist: opentelemetry-api>=1.22.0; extra == "tracing"
|
|
37
|
+
Requires-Dist: opentelemetry-sdk>=1.22.0; extra == "tracing"
|
|
38
|
+
Requires-Dist: opentelemetry-semantic-conventions>=0.43b0; extra == "tracing"
|
|
39
|
+
Requires-Dist: opentelemetry-resourcedetector-gcp>=1.8.0a0; extra == "tracing"
|
|
40
|
+
Requires-Dist: google-cloud-monitoring>=2.16.0; extra == "tracing"
|
|
41
|
+
Requires-Dist: mmh3>=4.1.0; extra == "tracing"
|
|
42
|
+
|
|
43
|
+
Python Client for Cloud Spanner
|
|
44
|
+
===============================
|
|
45
|
+
|
|
46
|
+
|GA| |pypi| |versions|
|
|
47
|
+
|
|
48
|
+
`Cloud Spanner`_ is the world's first fully managed relational database service
|
|
49
|
+
to offer both strong consistency and horizontal scalability for
|
|
50
|
+
mission-critical online transaction processing (OLTP) applications. With Cloud
|
|
51
|
+
Spanner you enjoy all the traditional benefits of a relational database; but
|
|
52
|
+
unlike any other relational database service, Cloud Spanner scales horizontally
|
|
53
|
+
to hundreds or thousands of servers to handle the biggest transactional
|
|
54
|
+
workloads.
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
- `Client Library Documentation`_
|
|
58
|
+
- `Product Documentation`_
|
|
59
|
+
|
|
60
|
+
.. |GA| image:: https://img.shields.io/badge/support-GA-gold.svg
|
|
61
|
+
:target: https://github.com/googleapis/google-cloud-python/blob/main/README.rst#general-availability
|
|
62
|
+
.. |pypi| image:: https://img.shields.io/pypi/v/google-cloud-spanner.svg
|
|
63
|
+
:target: https://pypi.org/project/google-cloud-spanner/
|
|
64
|
+
.. |versions| image:: https://img.shields.io/pypi/pyversions/google-cloud-spanner.svg
|
|
65
|
+
:target: https://pypi.org/project/google-cloud-spanner/
|
|
66
|
+
.. _Cloud Spanner: https://cloud.google.com/spanner/
|
|
67
|
+
.. _Client Library Documentation: https://cloud.google.com/python/docs/reference/spanner/latest
|
|
68
|
+
.. _Product Documentation: https://cloud.google.com/spanner/docs
|
|
69
|
+
|
|
70
|
+
Quick Start
|
|
71
|
+
-----------
|
|
72
|
+
|
|
73
|
+
In order to use this library, you first need to go through the following steps:
|
|
74
|
+
|
|
75
|
+
1. `Select or create a Cloud Platform project.`_
|
|
76
|
+
2. `Enable billing for your project.`_
|
|
77
|
+
3. `Enable the Google Cloud Spanner API.`_
|
|
78
|
+
4. `Setup Authentication.`_
|
|
79
|
+
|
|
80
|
+
.. _Select or create a Cloud Platform project.: https://console.cloud.google.com/project
|
|
81
|
+
.. _Enable billing for your project.: https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project
|
|
82
|
+
.. _Enable the Google Cloud Spanner API.: https://cloud.google.com/spanner
|
|
83
|
+
.. _Setup Authentication.: https://googleapis.dev/python/google-api-core/latest/auth.html
|
|
84
|
+
|
|
85
|
+
Installation
|
|
86
|
+
~~~~~~~~~~~~
|
|
87
|
+
|
|
88
|
+
Install this library in a `virtualenv`_ using pip. `virtualenv`_ is a tool to
|
|
89
|
+
create isolated Python environments. The basic problem it addresses is one of
|
|
90
|
+
dependencies and versions, and indirectly permissions.
|
|
91
|
+
|
|
92
|
+
With `virtualenv`_, it's possible to install this library without needing system
|
|
93
|
+
install permissions, and without clashing with the installed system
|
|
94
|
+
dependencies.
|
|
95
|
+
|
|
96
|
+
.. _`virtualenv`: https://virtualenv.pypa.io/en/latest/
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
Supported Python Versions
|
|
100
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
101
|
+
Python >= 3.7
|
|
102
|
+
|
|
103
|
+
Deprecated Python Versions
|
|
104
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
105
|
+
Python == 2.7.
|
|
106
|
+
Python == 3.5.
|
|
107
|
+
Python == 3.6.
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
Mac/Linux
|
|
111
|
+
^^^^^^^^^
|
|
112
|
+
|
|
113
|
+
.. code-block:: console
|
|
114
|
+
|
|
115
|
+
pip install virtualenv
|
|
116
|
+
virtualenv <your-env>
|
|
117
|
+
source <your-env>/bin/activate
|
|
118
|
+
<your-env>/bin/pip install google-cloud-spanner
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
Windows
|
|
122
|
+
^^^^^^^
|
|
123
|
+
|
|
124
|
+
.. code-block:: console
|
|
125
|
+
|
|
126
|
+
pip install virtualenv
|
|
127
|
+
virtualenv <your-env>
|
|
128
|
+
<your-env>\Scripts\activate
|
|
129
|
+
<your-env>\Scripts\pip.exe install google-cloud-spanner
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
Example Usage
|
|
133
|
+
-------------
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
Executing Arbitrary SQL in a Transaction
|
|
137
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
138
|
+
|
|
139
|
+
Generally, to work with Cloud Spanner, you will want a transaction. The
|
|
140
|
+
preferred mechanism for this is to create a single function, which executes
|
|
141
|
+
as a callback to ``database.run_in_transaction``:
|
|
142
|
+
|
|
143
|
+
.. code:: python
|
|
144
|
+
|
|
145
|
+
# First, define the function that represents a single "unit of work"
|
|
146
|
+
# that should be run within the transaction.
|
|
147
|
+
def update_anniversary(transaction, person_id, unix_timestamp):
|
|
148
|
+
# The query itself is just a string.
|
|
149
|
+
#
|
|
150
|
+
# The use of @parameters is recommended rather than doing your
|
|
151
|
+
# own string interpolation; this provides protections against
|
|
152
|
+
# SQL injection attacks.
|
|
153
|
+
query = """SELECT anniversary FROM people
|
|
154
|
+
WHERE id = @person_id"""
|
|
155
|
+
|
|
156
|
+
# When executing the SQL statement, the query and parameters are sent
|
|
157
|
+
# as separate arguments. When using parameters, you must specify
|
|
158
|
+
# both the parameters themselves and their types.
|
|
159
|
+
row = transaction.execute_sql(
|
|
160
|
+
query=query,
|
|
161
|
+
params={'person_id': person_id},
|
|
162
|
+
param_types={
|
|
163
|
+
'person_id': types.INT64_PARAM_TYPE,
|
|
164
|
+
},
|
|
165
|
+
).one()
|
|
166
|
+
|
|
167
|
+
# Now perform an update on the data.
|
|
168
|
+
old_anniversary = row[0]
|
|
169
|
+
new_anniversary = _compute_anniversary(old_anniversary, years)
|
|
170
|
+
transaction.update(
|
|
171
|
+
'people',
|
|
172
|
+
['person_id', 'anniversary'],
|
|
173
|
+
[person_id, new_anniversary],
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
# Actually run the `update_anniversary` function in a transaction.
|
|
177
|
+
database.run_in_transaction(update_anniversary,
|
|
178
|
+
person_id=42,
|
|
179
|
+
unix_timestamp=1335020400,
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
Select records using a Transaction
|
|
184
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
185
|
+
|
|
186
|
+
Once you have a transaction object (such as the first argument sent to
|
|
187
|
+
``run_in_transaction``), reading data is easy:
|
|
188
|
+
|
|
189
|
+
.. code:: python
|
|
190
|
+
|
|
191
|
+
# Define a SELECT query.
|
|
192
|
+
query = """SELECT e.first_name, e.last_name, p.telephone
|
|
193
|
+
FROM employees as e, phones as p
|
|
194
|
+
WHERE p.employee_id == e.employee_id"""
|
|
195
|
+
|
|
196
|
+
# Execute the query and return results.
|
|
197
|
+
result = transaction.execute_sql(query)
|
|
198
|
+
for row in result.rows:
|
|
199
|
+
print(row)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
Insert records using Data Manipulation Language (DML) with a Transaction
|
|
203
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
204
|
+
|
|
205
|
+
Use the ``execute_update()`` method to execute a DML statement:
|
|
206
|
+
|
|
207
|
+
.. code:: python
|
|
208
|
+
|
|
209
|
+
spanner_client = spanner.Client()
|
|
210
|
+
instance = spanner_client.instance(instance_id)
|
|
211
|
+
database = instance.database(database_id)
|
|
212
|
+
|
|
213
|
+
def insert_singers(transaction):
|
|
214
|
+
row_ct = transaction.execute_update(
|
|
215
|
+
"INSERT Singers (SingerId, FirstName, LastName) "
|
|
216
|
+
" VALUES (10, 'Virginia', 'Watson')"
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
print("{} record(s) inserted.".format(row_ct))
|
|
220
|
+
|
|
221
|
+
database.run_in_transaction(insert_singers)
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
Insert records using Mutations with a Transaction
|
|
225
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
226
|
+
|
|
227
|
+
To add one or more records to a table, use ``insert``:
|
|
228
|
+
|
|
229
|
+
.. code:: python
|
|
230
|
+
|
|
231
|
+
transaction.insert(
|
|
232
|
+
'citizens',
|
|
233
|
+
columns=['email', 'first_name', 'last_name', 'age'],
|
|
234
|
+
values=[
|
|
235
|
+
['phred@exammple.com', 'Phred', 'Phlyntstone', 32],
|
|
236
|
+
['bharney@example.com', 'Bharney', 'Rhubble', 31],
|
|
237
|
+
],
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
Update records using Data Manipulation Language (DML) with a Transaction
|
|
242
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
243
|
+
|
|
244
|
+
.. code:: python
|
|
245
|
+
|
|
246
|
+
spanner_client = spanner.Client()
|
|
247
|
+
instance = spanner_client.instance(instance_id)
|
|
248
|
+
database = instance.database(database_id)
|
|
249
|
+
|
|
250
|
+
def update_albums(transaction):
|
|
251
|
+
row_ct = transaction.execute_update(
|
|
252
|
+
"UPDATE Albums "
|
|
253
|
+
"SET MarketingBudget = MarketingBudget * 2 "
|
|
254
|
+
"WHERE SingerId = 1 and AlbumId = 1"
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
print("{} record(s) updated.".format(row_ct))
|
|
258
|
+
|
|
259
|
+
database.run_in_transaction(update_albums)
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
Update records using Mutations with a Transaction
|
|
263
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
264
|
+
|
|
265
|
+
``Transaction.update`` updates one or more existing records in a table. Fails
|
|
266
|
+
if any of the records does not already exist.
|
|
267
|
+
|
|
268
|
+
.. code:: python
|
|
269
|
+
|
|
270
|
+
transaction.update(
|
|
271
|
+
'citizens',
|
|
272
|
+
columns=['email', 'age'],
|
|
273
|
+
values=[
|
|
274
|
+
['phred@exammple.com', 33],
|
|
275
|
+
['bharney@example.com', 32],
|
|
276
|
+
],
|
|
277
|
+
)
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
Connection API
|
|
281
|
+
--------------
|
|
282
|
+
Connection API represents a wrap-around for Python Spanner API, written in accordance with PEP-249, and provides a simple way of communication with a Spanner database through connection objects:
|
|
283
|
+
|
|
284
|
+
.. code:: python
|
|
285
|
+
|
|
286
|
+
from google.cloud.spanner_dbapi.connection import connect
|
|
287
|
+
|
|
288
|
+
connection = connect("instance-id", "database-id")
|
|
289
|
+
connection.autocommit = True
|
|
290
|
+
|
|
291
|
+
cursor = connection.cursor()
|
|
292
|
+
cursor.execute("SELECT * FROM table_name")
|
|
293
|
+
|
|
294
|
+
result = cursor.fetchall()
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
If using [fine-grained access controls](https://cloud.google.com/spanner/docs/access-with-fgac) you can pass a ``database_role`` argument to connect as that role:
|
|
298
|
+
|
|
299
|
+
.. code:: python
|
|
300
|
+
|
|
301
|
+
connection = connect("instance-id", "database-id", database_role='your-role')
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
Aborted Transactions Retry Mechanism
|
|
305
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
306
|
+
|
|
307
|
+
In ``!autocommit`` mode, transactions can be aborted due to transient errors. In most cases retry of an aborted transaction solves the problem. To simplify it, connection tracks SQL statements, executed in the current transaction. In case the transaction aborted, the connection initiates a new one and re-executes all the statements. In the process, the connection checks that retried statements are returning the same results that the original statements did. If results are different, the transaction is dropped, as the underlying data changed, and auto retry is impossible.
|
|
308
|
+
|
|
309
|
+
Auto-retry of aborted transactions is enabled only for ``!autocommit`` mode, as in ``autocommit`` mode transactions are never aborted.
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
Next Steps
|
|
313
|
+
~~~~~~~~~~
|
|
314
|
+
|
|
315
|
+
- See the `Client Library Documentation`_ to learn how to connect to Cloud
|
|
316
|
+
Spanner using this Client Library.
|
|
317
|
+
- Read the `Product documentation`_ to learn
|
|
318
|
+
more about the product and see How-to Guides.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
google/cloud/spanner.py,sha256=jtzrZR-g67zYgr83phOfkwvhgBYdKzRtkpYCKWMoKr0,1562
|
|
2
|
+
google/cloud/spanner_admin_database_v1/__init__.py,sha256=wdQBs2JwKIuZvS4DR3vXKIOUhSU0wS6hAlFg0FCC1Nw,5931
|
|
3
|
+
google/cloud/spanner_admin_database_v1/gapic_metadata.json,sha256=ZrI6qyWdDOT-MeaLXnM3uNpjM03cienmcev49FpiTFo,10528
|
|
4
|
+
google/cloud/spanner_admin_database_v1/gapic_version.py,sha256=scz0Dj8xUIUOdjY18HfATTPHPWs31b3bntF6sSjiJtQ,653
|
|
5
|
+
google/cloud/spanner_admin_database_v1/py.typed,sha256=BxrYCv9QphWZVnT4NV6YZwdCAyDZfHvG7W9xkmUZR3A,96
|
|
6
|
+
google/cloud/spanner_admin_database_v1/services/__init__.py,sha256=ABnBlq63X5TtiLc0JptfQUECNGc-s0WTBlbk0_83qf0,600
|
|
7
|
+
google/cloud/spanner_admin_database_v1/services/database_admin/__init__.py,sha256=aZXIxlO2DQbfgjafYFIHAgyzcMTU8uQlTIXKZYrwgy4,765
|
|
8
|
+
google/cloud/spanner_admin_database_v1/services/database_admin/async_client.py,sha256=UrIzlp71tKS-yiqdBjuuFNCtw8-wZNq4FQuQ8Af8E8s,182687
|
|
9
|
+
google/cloud/spanner_admin_database_v1/services/database_admin/client.py,sha256=Zyff3t9JUYB_9_f4bw0QW9PDfIqHFuIEjqAyHPNsjOc,201545
|
|
10
|
+
google/cloud/spanner_admin_database_v1/services/database_admin/pagers.py,sha256=8bF_ABuhmVASWwpQ07up49Imo8V0c_WauVUHyrfdtjI,41575
|
|
11
|
+
google/cloud/spanner_admin_database_v1/services/database_admin/transports/__init__.py,sha256=2Xnf_bRKXCqTVp15pj295TqE6AfL38QB4U8o8ZO9LR0,1404
|
|
12
|
+
google/cloud/spanner_admin_database_v1/services/database_admin/transports/base.py,sha256=Nn0PDQBoFdJvJqL7hdEKxE5272YbGktlEqzMlgGm3Wk,28783
|
|
13
|
+
google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc.py,sha256=fX_ml0R1XOXyjBm8OlcWUxJLrtyU8Whm7N6OFoH8n4g,58939
|
|
14
|
+
google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc_asyncio.py,sha256=asXLML-qBrHhbD4iRMSo1PWNpDa7wCEEVpziQ8oZwgQ,74359
|
|
15
|
+
google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest.py,sha256=yek3UyD6GcYjXWXL7WyAKr4twT6GztS4E0oV64ydhis,271331
|
|
16
|
+
google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest_base.py,sha256=hVDMK2SgBLgA486xTHiqsNF5ybx5khwqQesReYwcvbw,58338
|
|
17
|
+
google/cloud/spanner_admin_database_v1/types/__init__.py,sha256=Pg28v-TPYY3EGoqQrDGuX3taUTYpIlL2N2Z9NQ0QXlg,3976
|
|
18
|
+
google/cloud/spanner_admin_database_v1/types/backup.py,sha256=L_ymeAS4BokZBKlzdwd-LTwQN9LYjAa1FokZL-u1fR8,45183
|
|
19
|
+
google/cloud/spanner_admin_database_v1/types/backup_schedule.py,sha256=_jMQv6yKauSUo12C24QGucVh2lA4pp8Y2Xte-cxg8oA,13391
|
|
20
|
+
google/cloud/spanner_admin_database_v1/types/common.py,sha256=xqOYx7Kz08xKglzYXRJSUacPXS_7Z-DMdp2cRsaU4to,6133
|
|
21
|
+
google/cloud/spanner_admin_database_v1/types/spanner_database_admin.py,sha256=Eg7S0zTtv6UtuxIFlglL88srsUWe25aN_HzZ9gxfuuw,49080
|
|
22
|
+
google/cloud/spanner_admin_instance_v1/__init__.py,sha256=75XSugf9dqoAUU3DISYR2Dvn9ujK5vYwbGBpKm0TS7U,4934
|
|
23
|
+
google/cloud/spanner_admin_instance_v1/gapic_metadata.json,sha256=OWxhJ3__X-5H5gkKOreEHrDVl5EsKA2fODf0ZuQiN3I,9091
|
|
24
|
+
google/cloud/spanner_admin_instance_v1/gapic_version.py,sha256=scz0Dj8xUIUOdjY18HfATTPHPWs31b3bntF6sSjiJtQ,653
|
|
25
|
+
google/cloud/spanner_admin_instance_v1/py.typed,sha256=qUSbbKOvJYzyuJ34ektbdk-ZPwZomNqxyGjYMVyBm4o,96
|
|
26
|
+
google/cloud/spanner_admin_instance_v1/services/__init__.py,sha256=ABnBlq63X5TtiLc0JptfQUECNGc-s0WTBlbk0_83qf0,600
|
|
27
|
+
google/cloud/spanner_admin_instance_v1/services/instance_admin/__init__.py,sha256=uwLUx2ABg9Rbi_5vbX2cPwAcnXF2lirJwhA37Pvc5sc,765
|
|
28
|
+
google/cloud/spanner_admin_instance_v1/services/instance_admin/async_client.py,sha256=1XZKf3yxyoemW7ClqZ5qyFIDYzeqtuzMkLyukR0wHJk,155770
|
|
29
|
+
google/cloud/spanner_admin_instance_v1/services/instance_admin/client.py,sha256=BGLsmBcGkmRwaJ7tZIdvUlXR4bFhWRNrL2GRB0IuK9E,171564
|
|
30
|
+
google/cloud/spanner_admin_instance_v1/services/instance_admin/pagers.py,sha256=-isQintXDjHVJVOvjOJ4RaSKdJrqIXZrPd0Lq6iNX3Q,36139
|
|
31
|
+
google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/__init__.py,sha256=XiJM4fsFU_4zNd2aR1qclBOxplcigYSnzFVMwGu1g8w,1404
|
|
32
|
+
google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/base.py,sha256=1PXLZHfEoJPp1i8qFeFETXjxVDjmddVjMrcnUIH3LVU,19315
|
|
33
|
+
google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc.py,sha256=epfNHW9Gtacq0Q2pl1DKcky15v95Gp9hFOgyYNN6Bfs,60323
|
|
34
|
+
google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc_asyncio.py,sha256=4_dTDpvSGs158AVC0tJXeq64b7Bg7MIi-sGHhn7Ze7c,68324
|
|
35
|
+
google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest.py,sha256=x_rxeHm28R8a-zkQa3tyiIhuSy53SNE9ML45NsJ3HuA,204376
|
|
36
|
+
google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest_base.py,sha256=jd4mpOsyhhTNwjAKd_ZbHLo_9-1pRo8v3NJ69SbYhwQ,41794
|
|
37
|
+
google/cloud/spanner_admin_instance_v1/types/__init__.py,sha256=dfPeytgbtSxnHFy4npSzTt4IiEM7TGpEbq6h-WW_AyY,3221
|
|
38
|
+
google/cloud/spanner_admin_instance_v1/types/common.py,sha256=witwhGY-8krEJV8WWXa_1n-Etny-paq443_Cqd4NWvc,2896
|
|
39
|
+
google/cloud/spanner_admin_instance_v1/types/spanner_instance_admin.py,sha256=Vf9EqyEMwzgS0qu4h6u3QJLgY90yXAKBgPfYnPpfpOc,91376
|
|
40
|
+
google/cloud/spanner_dbapi/__init__.py,sha256=zo5zOZbGcOAOuMeS3kd5B7Gg1v_a8UyI8TAR1mioDtg,3275
|
|
41
|
+
google/cloud/spanner_dbapi/_helpers.py,sha256=T2pWMNOWudFVUHqqzasjzLjTHEtqo7mcmgOsjEk8600,3525
|
|
42
|
+
google/cloud/spanner_dbapi/batch_dml_executor.py,sha256=PrXxN5N1t7Qg_DCR3oLj0pBpNx7WQtjAvqVxI7uMeXY,4885
|
|
43
|
+
google/cloud/spanner_dbapi/checksum.py,sha256=_GaKK84wOdW5c4Z3BN0xgSnL0p-BzV_ZgYUSZ5jIC3c,2732
|
|
44
|
+
google/cloud/spanner_dbapi/client_side_statement_executor.py,sha256=pRMZ8KpjAC7EOWcNiMjWgNOgoXaH0GmAnc0YiCresZY,5423
|
|
45
|
+
google/cloud/spanner_dbapi/client_side_statement_parser.py,sha256=r5cXxiF9Nkml0ukDWa8MpXsV4y9OeBDwyxVAzzYmYRY,4595
|
|
46
|
+
google/cloud/spanner_dbapi/connection.py,sha256=GmNEEcw2JqVF-Mm6c80Lz75fjjzcx4JbloKqsrztz6M,31034
|
|
47
|
+
google/cloud/spanner_dbapi/cursor.py,sha256=UcvKsiz4nBlF1bC8Y8BoiC2jCk1kQGqvdkE8_oNRmDg,23105
|
|
48
|
+
google/cloud/spanner_dbapi/exceptions.py,sha256=utuaLJY_b0rJGGgz-VCCSAkebEtIrDz385_cIEQiir0,4485
|
|
49
|
+
google/cloud/spanner_dbapi/parse_utils.py,sha256=Ad6zUe65UT1zQnvuMQlopQkcUrDvOCm1RaUbN3I6HGQ,11084
|
|
50
|
+
google/cloud/spanner_dbapi/parsed_statement.py,sha256=ark_zdxWYxcHBWRlHqGwhZuqlzu8eD7suSe9Vge0pmU,1587
|
|
51
|
+
google/cloud/spanner_dbapi/parser.py,sha256=UpRce6Z0k-KCcQ54QFsyz479gYeN1oVOLlzse_FuWRY,6963
|
|
52
|
+
google/cloud/spanner_dbapi/partition_helper.py,sha256=7taroUARnHqwIhVajdQoJTOXPa8uyGswyL-qVsMQ40w,1362
|
|
53
|
+
google/cloud/spanner_dbapi/transaction_helper.py,sha256=iik7XzXZNmg1f-AKm7TvMt2F3vKdCpGgXjQZjfbcgVQ,11925
|
|
54
|
+
google/cloud/spanner_dbapi/types.py,sha256=wLD0HuFo8lloyS-tXraBBNimAx46RXQi1oTWwxjAnOs,3157
|
|
55
|
+
google/cloud/spanner_dbapi/utils.py,sha256=S1EbFuygH03V_IqceQdxQSgkMgCg5jDT0W-CT5Smwww,4500
|
|
56
|
+
google/cloud/spanner_dbapi/version.py,sha256=8oizsT-rAX0mF0DTHglibBRpjuyB5SZICgOgasL66UM,802
|
|
57
|
+
google/cloud/spanner_v1/__init__.py,sha256=J9VphuLKA5Mmce2p_KdZ790OUdlW3gxifX6LDK038uk,5129
|
|
58
|
+
google/cloud/spanner_v1/_helpers.py,sha256=HrKqeNvckblBcSydBPyXTwo87jt7fRMozCjjDJ3WMQ0,24869
|
|
59
|
+
google/cloud/spanner_v1/_opentelemetry_tracing.py,sha256=Lva10_OwnkdsQbsgsiUcKYzpHATVxPxJccx_vhrehDE,6275
|
|
60
|
+
google/cloud/spanner_v1/backup.py,sha256=I7jXEdwRgx3YZHWt5tSSoWoY-1jZLdqCG5GKgyZrW7s,13765
|
|
61
|
+
google/cloud/spanner_v1/batch.py,sha256=k_7VAFB2KQFmNYa-QIuDAXCN2U589jvhaLmnKZ5BvdI,16216
|
|
62
|
+
google/cloud/spanner_v1/client.py,sha256=QRibbEQU9yJKssyHnOlwm6VClcO6IfLBoWPuAAakTsA,21539
|
|
63
|
+
google/cloud/spanner_v1/data_types.py,sha256=2kAjsDNAKDVVS-NLpNzUPT8tZPSvZgXnui9NS4icnhM,11686
|
|
64
|
+
google/cloud/spanner_v1/database.py,sha256=hXtf31MNtKaA4i8x86i8uQQJjsvb-A2lRRI0lbIgrEs,74050
|
|
65
|
+
google/cloud/spanner_v1/database_sessions_manager.py,sha256=ASXo39CmiIuLGK9RuhUgmZteBnusPwQfhuaoM4h3SWM,10429
|
|
66
|
+
google/cloud/spanner_v1/gapic_metadata.json,sha256=MbAZ4OZ9Lm7mUng2FGTS0mZBw_vsmTp1DqF-RqiwwBA,6400
|
|
67
|
+
google/cloud/spanner_v1/gapic_version.py,sha256=scz0Dj8xUIUOdjY18HfATTPHPWs31b3bntF6sSjiJtQ,653
|
|
68
|
+
google/cloud/spanner_v1/instance.py,sha256=LZ5mb7kahZ6JGYCOdE7UZgfLF2gtL_u-PCxD4sRwMgA,27807
|
|
69
|
+
google/cloud/spanner_v1/keyset.py,sha256=hDf7eRo_pDM9OBt-R28xgBezikxh6_OZNIIf-2U27R8,6251
|
|
70
|
+
google/cloud/spanner_v1/merged_result_set.py,sha256=Ajt2Zvd-jevqkoj44fSKztqoXQci9jhL-vAf1W5cYYk,5374
|
|
71
|
+
google/cloud/spanner_v1/param_types.py,sha256=v3l59a2KiUahtRqHijStPm6ANeRgTD3MjIa0UxsPrkU,3996
|
|
72
|
+
google/cloud/spanner_v1/pool.py,sha256=8-XQ74RKfod3rTY5fThKyPHhXkI02IhV8Q7v3jzCd6g,27789
|
|
73
|
+
google/cloud/spanner_v1/py.typed,sha256=0TrB46d7OZCTc-vcmQV5fTpOYIHtt_-zHB67DxHKRmk,81
|
|
74
|
+
google/cloud/spanner_v1/request_id_header.py,sha256=clXYqlUGtJOMr1E1uJcsl3_sxspPck9yb5GLtRVjFJw,1925
|
|
75
|
+
google/cloud/spanner_v1/session.py,sha256=GtS8ZmfvS6NJhFwsbFTLo8m_WHIv4T84c1CHMFBYsTU,24141
|
|
76
|
+
google/cloud/spanner_v1/session_options.py,sha256=iOJXKa63SZTUHtDZ2oa7D31jYnQtZKjMskqzBdj7xLU,5564
|
|
77
|
+
google/cloud/spanner_v1/snapshot.py,sha256=SYuu0eTN9BQ2ktvf6ZiEaNNgFVoI3V6OEPMbtQv3MXQ,40704
|
|
78
|
+
google/cloud/spanner_v1/streamed.py,sha256=Vb3-QQpH513MJfW4NcvSbejlrTEE31o7yYckGhA5i7I,13838
|
|
79
|
+
google/cloud/spanner_v1/table.py,sha256=TSAi6s4B0_D2tx4G-2P9e2x9qN-tl8rznYX2vmYKqsk,5812
|
|
80
|
+
google/cloud/spanner_v1/transaction.py,sha256=M02BazOzihwmU1ZcWF3VNItSifGCnUI7RiVpT2iJrIU,28656
|
|
81
|
+
google/cloud/spanner_v1/metrics/constants.py,sha256=ZYZOXGLu_nuOG7h0Ga44azYUcrjZ-RcfCT-eKwvB2mY,2646
|
|
82
|
+
google/cloud/spanner_v1/metrics/metrics_capture.py,sha256=TN7v48SAY0gR0ZTrmoMqFiW3OMOZriFyE6GQ6SaoNhU,3016
|
|
83
|
+
google/cloud/spanner_v1/metrics/metrics_exporter.py,sha256=AOtLWLq8xDWd1NarqrKdcRHIPhYOnYqkjCh4zHrzRjU,14381
|
|
84
|
+
google/cloud/spanner_v1/metrics/metrics_interceptor.py,sha256=SNJOngIetaoC0blwinz4yp2ksG7zbbk8TyuM-lvDICI,6292
|
|
85
|
+
google/cloud/spanner_v1/metrics/metrics_tracer.py,sha256=DBM1Zgzni3UegwlEUAol0ATKlJlcg3VCV8eY5WM45vU,24187
|
|
86
|
+
google/cloud/spanner_v1/metrics/metrics_tracer_factory.py,sha256=8L-drqsA5KcDSl-8jMHyeu6KiaHpia-WbHvjCMan9as,13598
|
|
87
|
+
google/cloud/spanner_v1/metrics/spanner_metrics_tracer_factory.py,sha256=d1Ir8_oQRbzHbVg-VaamGAT_k6MA67KSGPsFhJZE2bA,6673
|
|
88
|
+
google/cloud/spanner_v1/services/__init__.py,sha256=ABnBlq63X5TtiLc0JptfQUECNGc-s0WTBlbk0_83qf0,600
|
|
89
|
+
google/cloud/spanner_v1/services/spanner/__init__.py,sha256=-UCLTeaa1Jri2FNxBiQaw_Fh5eIzPSbZGrZPoG82NOI,741
|
|
90
|
+
google/cloud/spanner_v1/services/spanner/async_client.py,sha256=RC92gJjg4bAZ6u5kDPdC2oYuR7aQGSgqDTgQlDGPVFg,94844
|
|
91
|
+
google/cloud/spanner_v1/services/spanner/client.py,sha256=SiI54hbOX-IHJ4O_5J_Qy1pSs5amlx7M4-H9u_iT6xc,110815
|
|
92
|
+
google/cloud/spanner_v1/services/spanner/pagers.py,sha256=FnFfI1YOT-9h3BKSianVbELhdbKGcIc4eN1OEXfbc9s,7617
|
|
93
|
+
google/cloud/spanner_v1/services/spanner/transports/__init__.py,sha256=yccbRolKSZZZ6MD5SvM8U67AVr290SvGn_4653iBMMo,1320
|
|
94
|
+
google/cloud/spanner_v1/services/spanner/transports/base.py,sha256=30YJLe3_-C3wPouGONpMHi-8wfgwjWMpBdC7jYZmoDY,18437
|
|
95
|
+
google/cloud/spanner_v1/services/spanner/transports/grpc.py,sha256=21kLzyF9Fz5PMhkanp97IYXCshu_91-oZxWwlPZrqak,40876
|
|
96
|
+
google/cloud/spanner_v1/services/spanner/transports/grpc_asyncio.py,sha256=l4PXoW_MfwemRzKJlnpqRE5EvX4CYxXnYzaA_nOGllc,50081
|
|
97
|
+
google/cloud/spanner_v1/services/spanner/transports/rest.py,sha256=PRNrYnFmpzYNCvXevBMnadtOpHpos98f71RHMVlyjQ0,140802
|
|
98
|
+
google/cloud/spanner_v1/services/spanner/transports/rest_base.py,sha256=LRQJucV_NuSut7AEy6uJ6s2ffPbswrgvkYpXbdhyJOg,34136
|
|
99
|
+
google/cloud/spanner_v1/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
100
|
+
google/cloud/spanner_v1/testing/database_test.py,sha256=XM68aWs3eiJsT0W4i5_KS-JS_5681Mfnhiq7d2sCL6o,4633
|
|
101
|
+
google/cloud/spanner_v1/testing/interceptors.py,sha256=pIu4Obuq5Ipvbif1EFlXUStNUz_Qzmv4HxCfEMsustg,4007
|
|
102
|
+
google/cloud/spanner_v1/testing/mock_database_admin.py,sha256=29iVRFZZE8a_zcXYHG31jRMOs8HFfA7WRQqnwAwKaIM,1436
|
|
103
|
+
google/cloud/spanner_v1/testing/mock_spanner.py,sha256=-yPXpc5n-JEOcNjvED6UaJ-JPix9M81qui_a-E48qfs,10047
|
|
104
|
+
google/cloud/spanner_v1/testing/spanner_database_admin_pb2_grpc.py,sha256=yBJwtrYZVEMBIBuHKqI0gHaEY0_Ue_i9g4HrXo5w41k,51633
|
|
105
|
+
google/cloud/spanner_v1/testing/spanner_pb2_grpc.py,sha256=1LhnR8UZLrU7AnAfpvm084wJ4jTK0Q5Hz60ZBMGM15w,33750
|
|
106
|
+
google/cloud/spanner_v1/types/__init__.py,sha256=h95mO_WEJWzKG3iGc5LAsYTpqIaOBR931KMS_drYGAc,2736
|
|
107
|
+
google/cloud/spanner_v1/types/commit_response.py,sha256=eI7d8pbAt6jhYu-nIi1JZPPXmSDjOisol3526rCotFo,3465
|
|
108
|
+
google/cloud/spanner_v1/types/keys.py,sha256=WOEyBh2DstIMN2Qz6aVY_KXNwwgc8vCku0yEERaPw80,7879
|
|
109
|
+
google/cloud/spanner_v1/types/mutation.py,sha256=aqOpwlUUb9n97_jjro66gvaJCQEfj5qbhUjN7MBTxTU,7691
|
|
110
|
+
google/cloud/spanner_v1/types/query_plan.py,sha256=mtYO4nu_0zi8s63j1pl9Mw2w0nk1d7FG3AkZq3Tw75I,7930
|
|
111
|
+
google/cloud/spanner_v1/types/result_set.py,sha256=5XXfuGftg52WZ-1dwKn1l8veH6PkVCq1h3msGfT9dpA,14987
|
|
112
|
+
google/cloud/spanner_v1/types/spanner.py,sha256=R7cLYP5XpiWRYYmK_eGe0hboiPOpjiyvCwO1AcRVEN4,69023
|
|
113
|
+
google/cloud/spanner_v1/types/transaction.py,sha256=aaoejZDpgM3h4dTCowMyNdNmlVzrgR3XD8d3XwIYmR4,35890
|
|
114
|
+
google/cloud/spanner_v1/types/type.py,sha256=d-bZn0aN945GYqBJjwjNMU4Fq8JOk5wJ71WQ6PAYKd0,11049
|
|
115
|
+
google_cloud_spanner-3.55.0.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
116
|
+
google_cloud_spanner-3.55.0.dist-info/METADATA,sha256=xGq3wFoATrXdYbfh0kZBLS4OhZE8zvYI7NiZYc2Pe2I,11156
|
|
117
|
+
google_cloud_spanner-3.55.0.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
118
|
+
google_cloud_spanner-3.55.0.dist-info/top_level.txt,sha256=_1QvSJIhFAGfxb79D6DhB7SUw2X6T4rwnz_LLrbcD3c,7
|
|
119
|
+
google_cloud_spanner-3.55.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
google
|