class Schema

class tarantool.schema.Schema(schema)

A class used to describe a data schema. Encapsulates the names and types and provides more convenient syntax for database operations.

Create Schema instance.

Parameters:
  • connection (Connection instance) – Object representing connection to the server
  • schema (dict) – schema description

Example schema description:

>>> schema = {
    0: { # Space description
        'name': 'users', # Space name
        # Type that used to decode fields that are not listed below
        'default_type': tarantool.STR,
        'fields': {
            0: ('user_id', tarantool.NUM), # (field name, field type)
            1: ('num64field', tarantool.NUM64),
            2: ('strfield', tarantool.STR),
            # Alternative syntax
            #2: { 'name': 'strfield', 'type': tarantool.STR },
            #2: tarantool.STR # Alternative syntax
        },
        'indexes': {
            0: ('pk', [0]), # (name, [field_no])
            #0: { 'name': 'pk', 'fields': [0]}, # Alternative syntax
            #0: [0], # Alternative syntax
        }
    }
}
index_no(space_name, index_name)

Return index number by space name and index name

Parameters:
  • space_name (str) – Space name
  • index_name (str) – Index name
pack_key(values, space_no, index_no)

Convert a list of keys from Python to Tarantool types using schema

Parameters:
  • value (tuple of scalar values (bytes, str or int)) – key tuple to be packed
  • space_no (int) – space number
  • index_no (int) – index number
Returns:

packed values

Return type:

bytes

pack_value(value, cast_to=None)

Convert single field from Python type to Tarantol type

Parameters:
  • value (bytes, int, unicode (str for py3k)) – value to be packed
  • cast_to (int or a type object (one of bytes, int, unicode (str for py3k))) – data type
Returns:

packed value

Return type:

bytes

pack_values(values, space_no=None, field_defs=None, default_type=None)

Convert a list of fields from Python to Tarantool types using schema

Parameters:
  • value (tuple of scalar values (bytes, str or int)) – tuple to be packed
  • space_no (None or int) – space number
  • field_defs (None or [(name, type) or None]) – field definitions used for types conversion, e.g. [(‘field0’, tarantool.NUM), (‘field1’, tarantool.STR)]
  • default_type (None or int) – None a default type used for result conversion, as defined in schema[space_no]['default_type']
Returns:

packed tuple

Returns:

packed values

space_no(space_name)

Return space number by space name

Parameters:space_name (str) – Space name
unpack_value(packed_value, cast_to)

Convert field type from Tarantool type to Python type

Parameters:
  • value (bytes) – raw value from the database
  • cast_to (int or a type object (one of bytes, int, unicode (str for py3k))) – data type to cast to
Returns:

converted value

Return type:

value of native python type (one of bytes, int, unicode (str for py3k))

unpack_values(packed_values, space_no=None, field_defs=None, default_type=None)

Convert a list of fields from Tarantool to Python types using schema

Parameters:
  • packed_values (tuple of bytes) – tuple of the raw database values
  • space_no (None or int) – space number
  • field_defs (None or [(name, type) or None]) – field definitions used for types conversion, e.g. [(‘field0’, tarantool.NUM), (‘field1’, tarantool.STR)]
  • default_type (None or int) – None a default type used for result conversion, as defined in schema[space_no]['default_type']
Returns:

converted tuple value

Return type:

unpacked values of native python types (bytes, int, unicode (or str for py3k))

Previous topic

class Connection

Next topic

class Space

This Page