Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
data = pd.DataFrame({
"boolean_": [True, False],
"smallint_": np.array([0, 1], dtype=np.int16),
"int_": np.array([0, 1], dtype=np.int32),
"bigint_": np.array([0, 1], dtype=np.int64),
"float_": np.array([0, 1], dtype=np.float32),
"double_": np.array([0, 1], dtype=np.float64),
"varchar_": ["a", "b"],
"text_": ['a', 'b'],
"time_": [datetime.time(0, 11, 59), datetime.time(13)],
"timestamp_": [pd.Timestamp("2016"), pd.Timestamp("2017")],
"date_": [datetime.date(2016, 1, 1), datetime.date(2017, 1, 1)],
}, columns=['boolean_', 'smallint_', 'int_', 'bigint_', 'float_',
'double_', 'varchar_', 'text_', 'time_', 'timestamp_',
'date_'])
result = _pandas_loaders.build_row_desc(data)
expected = [
TColumnType(col_name='boolean_',
col_type=TTypeInfo(type=10),
is_reserved_keyword=None),
TColumnType(col_name='smallint_',
col_type=TTypeInfo(type=0),
is_reserved_keyword=None),
TColumnType(col_name='int_',
col_type=TTypeInfo(type=1),
is_reserved_keyword=None),
TColumnType(col_name='bigint_',
col_type=TTypeInfo(type=2)),
TColumnType(col_name='float_',
col_type=TTypeInfo(type=3)),
TColumnType(col_name='double_',
col_type=TTypeInfo(type=5)),
def test_create_non_pandas_raises(self):
with pytest.raises(TypeError) as m:
_pandas_loaders.build_row_desc([(1, 'a'), (2, 'b')])
assert m.match('is not supported for type ')
TColumnType(col_name='varchar_',
col_type=TTypeInfo(type=6, encoding=4)),
TColumnType(col_name='text_',
col_type=TTypeInfo(type=6, encoding=4)),
TColumnType(col_name='time_',
col_type=TTypeInfo(type=7)),
TColumnType(col_name='timestamp_',
col_type=TTypeInfo(type=8)),
TColumnType(col_name='date_',
col_type=TTypeInfo(type=9))
]
assert result == expected
data.index.name = 'idx'
result = _pandas_loaders.build_row_desc(data, preserve_index=True)
expected.insert(0, TColumnType(col_name='idx',
col_type=TTypeInfo(type=2)))
assert result == expected
def create_table(self, table_name, data, preserve_index=False):
"""Create a table from a pandas.DataFrame
Parameters
----------
table_name: str
data: DataFrame
preserve_index: bool, default False
Whether to create a column in the table for the DataFrame index
"""
row_desc = build_row_desc(data, preserve_index=preserve_index)
self._client.create_table(self._session, table_name, row_desc,
TFileType.DELIMITED, TCreateParams(False))