Гаечный ключ Google как параметр

При использовании клиента python гаечного ключа (но, возможно, проблема носит более общий характер) кажется невозможным передать структуры запросу в качестве параметра.

Рассмотрим следующую настройку:

from google.cloud.proto.spanner.v1 import type_pb2
from google.cloud import spanner

spanner_client = spanner.Client()
instance = spanner_client.instance('myinstance')
database = instance.database('mydb')

Если я хочу перевести следующий запрос на использование параметров

select * from UNNEST(ARRAY[STRUCT<foo INT64, bar INT64>(1, 2)])

При выполнении

STRUCT_TYPE = type_pb2.StructType()
FOO = type_pb2.StructType.Field(name='foo', type=type_pb2.Type(code=type_pb2.INT64))
BAR = type_pb2.StructType.Field(name='bar', type=type_pb2.Type(code=type_pb2.INT64))

STRUCT_TYPE.fields.extend([FOO, BAR])

database.execute_sql('select * from UNNEST(ARRAY[@struct])', 
    params={'struct': [1,2]}, 
    param_types={'struct': STRUCT_TYPE})

Дал бы мне

TypeError: Parameter to MergeFrom() must be instance of same class: expected Type got StructType.

Есть ли способ разрешить передачу структур?


person P Missault    schedule 08.06.2017    source источник


Ответы (1)


Вы не можете передавать структуры прямо сейчас. Это то, что мы решаем, но нет четких сроков.

person Albert Cui    schedule 08.06.2017