Skip to content

Commit 10b9a90

Browse files
author
Jon Wayne Parrott
authored
Update spanner sample to use bind parameters (#928)
1 parent 320ddd8 commit 10b9a90

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

spanner/cloud-client/snippets.py

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,8 @@ def add_index(instance_id, database_id):
152152
print('Added the AlbumsByAlbumTitle index.')
153153

154154

155-
def query_data_with_index(instance_id, database_id):
155+
def query_data_with_index(
156+
instance_id, database_id, start_title='Aardvark', end_title='Goo'):
156157
"""Queries sample data from the database using SQL and an index.
157158
158159
The index must exist before running this sample. You can add the index
@@ -168,14 +169,25 @@ def query_data_with_index(instance_id, database_id):
168169
ALTER TABLE Albums ADD COLUMN MarketingBudget INT64
169170
170171
"""
172+
from google.cloud.proto.spanner.v1 import type_pb2
173+
171174
spanner_client = spanner.Client()
172175
instance = spanner_client.instance(instance_id)
173176
database = instance.database(database_id)
174177

178+
params = {
179+
'start_title': start_title,
180+
'end_title': end_title
181+
}
182+
param_types = {
183+
'start_title': type_pb2.Type(code=type_pb2.STRING),
184+
'end_title': type_pb2.Type(code=type_pb2.STRING)
185+
}
175186
results = database.execute_sql(
176187
"SELECT AlbumId, AlbumTitle, MarketingBudget "
177188
"FROM Albums@{FORCE_INDEX=AlbumsByAlbumTitle} "
178-
"WHERE AlbumTitle >= 'Ardvark' AND AlbumTitle < 'Goo'")
189+
"WHERE AlbumTitle >= @start_title AND AlbumTitle < @end_title",
190+
params=params, param_types=param_types)
179191

180192
for row in results:
181193
print(
@@ -413,7 +425,12 @@ def read_only_transaction(instance_id, database_id):
413425
subparsers.add_parser(
414426
'read_only_transaction', help=read_only_transaction.__doc__)
415427
subparsers.add_parser('add_index', help=add_index.__doc__)
416-
subparsers.add_parser('query_data_with_index', help=insert_data.__doc__)
428+
query_data_with_index_parser = subparsers.add_parser(
429+
'query_data_with_index', help=query_data_with_index.__doc__)
430+
query_data_with_index_parser.add_argument(
431+
'start_title', default='Aardvark')
432+
query_data_with_index_parser.add_argument(
433+
'end_title', default='Goo')
417434
subparsers.add_parser('read_data_with_index', help=insert_data.__doc__)
418435
subparsers.add_parser('add_storing_index', help=add_storing_index.__doc__)
419436
subparsers.add_parser(
@@ -442,7 +459,9 @@ def read_only_transaction(instance_id, database_id):
442459
elif args.command == 'add_index':
443460
add_index(args.instance_id, args.database_id)
444461
elif args.command == 'query_data_with_index':
445-
query_data_with_index(args.instance_id, args.database_id)
462+
query_data_with_index(
463+
args.instance_id, args.database_id,
464+
args.start_title, args.end_title)
446465
elif args.command == 'read_data_with_index':
447466
read_data_with_index(args.instance_id, args.database_id)
448467
elif args.command == 'add_storing_index':

0 commit comments

Comments
 (0)