atoti.column module#
- class atoti.Column#
Column of a
atoti.Table
.- property data_type: Literal['boolean', 'double', 'double[]', 'float', 'float[]', 'int', 'int[]', 'LocalDate', 'LocalDateTime', 'LocalTime', 'long', 'long[]', 'Object', 'Object[]', 'String', 'ZonedDateTime']#
The type of the elements in the column.
- Return type
Literal
[‘boolean’, ‘double’, ‘double[]’, ‘float’, ‘float[]’, ‘int’, ‘int[]’, ‘LocalDate’, ‘LocalDateTime’, ‘LocalTime’, ‘long’, ‘long[]’, ‘Object’, ‘Object[]’, ‘String’, ‘ZonedDateTime’]
- property default_value: Any#
Value used to replace
None
inserted values.Each data type has its own default
default_value
value:>>> from pprint import pprint >>> table = session.create_table( ... "Main data types", ... types={ ... "boolean": tt.BOOLEAN, ... "double": tt.DOUBLE, ... "double[]": tt.DOUBLE_ARRAY, ... "float": tt.FLOAT, ... "float[]": tt.FLOAT_ARRAY, ... "int": tt.INT, ... "int[]": tt.INT_ARRAY, ... "LocalDate": tt.LOCAL_DATE, ... "LocalDateTime": tt.LOCAL_DATE_TIME, ... "LocalTime": tt.LOCAL_TIME, ... "long": tt.LONG, ... "long[]": tt.LONG_ARRAY, ... "String": tt.STRING, ... "ZonedDateTime": tt.ZONED_DATE_TIME, ... }, ... ) >>> pprint( ... { ... column_name: table[column_name].default_value ... for column_name in table.columns ... }, ... sort_dicts=False, ... ) {'boolean': False, 'double': None, 'double[]': None, 'float': None, 'float[]': None, 'int': None, 'int[]': None, 'LocalDate': datetime.date(1970, 1, 1), 'LocalDateTime': datetime.datetime(1970, 1, 1, 0, 0), 'LocalTime': datetime.time(0, 0), 'long': None, 'long[]': None, 'String': 'N/A', 'ZonedDateTime': datetime.datetime(1970, 1, 1, 0, 0, tzinfo=tzutc())}
Key columns cannot be nullable so their default value is forced to something different than
None
. For numeric columns, this is zero:>>> table = session.create_table( ... "Numeric", ... keys=["int", "float"], ... types={ ... "int": tt.INT, ... "float": tt.FLOAT, ... "long": tt.LONG, ... "double": tt.DOUBLE, ... }, ... ) >>> { ... column_name: table[column_name].default_value ... for column_name in table.columns ... } {'int': 0, 'float': 0.0, 'long': None, 'double': None} >>> table += (None, None, None, None) >>> table.head() long double int float 0 0.0 NaN NaN
Changing the default value from
None
to something else affects both the previously insertedNone
values and the upcoming ones:>>> table["long"].default_value = 42 >>> table["long"].default_value 42 >>> table.head() long double int float 0 0.0 42 NaN >>> table += (1, None, None, None) >>> table.head() long double int float 0 0.0 42 NaN 1 0.0 42 NaN
Once a column has a default value different than
None
, it cannot be changed anymore:>>> table["long"].default_value = 1337 Traceback (most recent call last): ... NotImplementedError: The default value is already not ``None`` and cannot be changed: recreate the table using the `default_values` parameter instead. >>> table["long"].default_value 42 >>> del session.tables["Numeric"] >>> table = session.create_table( ... "Numeric", ... keys=["int", "float"], ... types={ ... "int": tt.INT, ... "float": tt.FLOAT, ... "long": tt.LONG, ... "double": tt.DOUBLE, ... }, ... default_values={"long": 1337}, ... ) >>> table["long"].default_value 1337
The default value can also not be changed to
None
:>>> table = session.create_table("Stringly", types={"String": tt.STRING}) >>> table["String"].default_value = None Traceback (most recent call last): ... NotImplementedError: The default value cannot be changed to `None`: recreate the table using the `default_values` parameter instead. >>> table["String"].default_value 'N/A' >>> del session.tables["Stringly"] >>> table = session.create_table( ... "Stringly", ... types={"String": tt.STRING}, ... default_values={"String": None}, ... ) >>> print(table["String"].default_value) None
- Return type