@@ -2509,6 +2509,35 @@ def update_venues(transaction):
25092509
25102510 # [END spanner_set_transaction_tag]
25112511
2512+ def set_transaction_timeout (instance_id , database_id ):
2513+ """Executes a transaction with a transaction timeout."""
2514+ # [START spanner_transaction_timeout]
2515+ # instance_id = "your-spanner-instance"
2516+ # database_id = "your-spanner-db-id"
2517+ spanner_client = spanner .Client ()
2518+ instance = spanner_client .instance (instance_id )
2519+ database = instance .database (database_id )
2520+
2521+ def read_then_write (transaction ):
2522+ # Read records.
2523+ results = transaction .execute_sql (
2524+ "SELECT SingerId, FirstName, LastName FROM Singers ORDER BY LastName, FirstName"
2525+ )
2526+ for result in results :
2527+ print ("SingerId: {}, FirstName: {}, LastName: {}" .format (* result ))
2528+
2529+ # Insert a record.
2530+ row_ct = transaction .execute_update (
2531+ "INSERT INTO Singers (SingerId, FirstName, LastName) "
2532+ " VALUES (100, 'George', 'Washington')"
2533+ )
2534+ print ("{} record(s) inserted." .format (row_ct ))
2535+
2536+
2537+
2538+ database .run_in_transaction (read_then_write , timeout_secs = 60 )
2539+
2540+ # [END spanner_transaction_timeout]
25122541
25132542def set_request_tag (instance_id , database_id ):
25142543 """Executes a snapshot read with a request tag."""
@@ -3617,6 +3646,7 @@ def add_split_points(instance_id, database_id):
36173646 subparsers .add_parser ("add_column" , help = add_column .__doc__ )
36183647 subparsers .add_parser ("update_data" , help = update_data .__doc__ )
36193648 subparsers .add_parser ("set_max_commit_delay" , help = set_max_commit_delay .__doc__ )
3649+ subparsers .add_parser ("set_transaction_timeout" , help = set_transaction_timeout .__doc__ )
36203650 subparsers .add_parser (
36213651 "query_data_with_new_column" , help = query_data_with_new_column .__doc__
36223652 )
@@ -3783,6 +3813,8 @@ def add_split_points(instance_id, database_id):
37833813 update_data (args .instance_id , args .database_id )
37843814 elif args .command == "set_max_commit_delay" :
37853815 set_max_commit_delay (args .instance_id , args .database_id )
3816+ elif args .command == "set_transaction_timeout" :
3817+ set_transaction_timeout (args .instance_id , args .database_id )
37863818 elif args .command == "query_data_with_new_column" :
37873819 query_data_with_new_column (args .instance_id , args .database_id )
37883820 elif args .command == "read_write_transaction" :
0 commit comments