in python-phoenixdb/phoenixdb/cursor.py [0:0]
def _transform_parameters(self, parameters):
if len(parameters) != len(self._parameter_data_types):
raise ProgrammingError('Number of placeholders (?) must match number of parameters.'
' Number of placeholders: {0}. Number of parameters: {1}'
.format(len(self._parameter_data_types), len(parameters)))
typed_parameters = []
for value, data_type in zip(parameters, self._parameter_data_types):
field_name, rep, mutate_to, cast_from, is_array = data_type
typed_value = common_pb2.TypedValue()
if value is None:
typed_value.null = True
typed_value.type = common_pb2.NULL
else:
typed_value.null = False
if is_array:
if type(value) in [list, tuple]:
for element in value:
if mutate_to is not None:
element = mutate_to(element)
typed_element = common_pb2.TypedValue()
if element is None:
typed_element.null = True
else:
typed_element.type = rep
setattr(typed_element, field_name, element)
typed_value.array_value.append(typed_element)
typed_value.type = common_pb2.ARRAY
typed_value.component_type = rep
else:
raise ProgrammingError('Scalar value specified for array parameter.')
else:
if mutate_to is not None:
value = mutate_to(value)
typed_value.type = rep
setattr(typed_value, field_name, value)
typed_parameters.append(typed_value)
return typed_parameters