def test_create_select_table_range_datetime_index(empty_db, simple_df, constants): """add a new table with explicit index, read it back with pandabase, check equality""" simple_df.index = simple_df.date simple_df = simple_df.drop('date', axis=1) table = pb.to_sql(simple_df, table_name='sample', con=empty_db, how='create_only') # print(table.columns) assert table.columns['date'].primary_key assert pb.has_table(empty_db, 'sample') loaded0 = pb.read_sql('sample', con=empty_db, lowest=simple_df.index[-1], highest=simple_df.index[0]) print(loaded0) assert len(loaded0) == 0 loaded = pb.read_sql('sample', con=empty_db, lowest=simple_df.index[0], highest=simple_df.index[-1]) assert pb.companda(loaded, simple_df, ignore_all_nan_columns=True) loaded = pb.read_sql('sample', con=empty_db, highest=simple_df.index[-1]) assert pb.companda(loaded, simple_df, ignore_all_nan_columns=True) loaded = pb.read_sql('sample', con=empty_db, lowest=simple_df.index[0]) assert pb.companda(loaded, simple_df, ignore_all_nan_columns=True)
def test_create_table_no_index_load_pandas(empty_db, minimal_df, as_type, how): """add a new minimal table to db, read with Pandas""" if as_type: minimal_df['integer'] = minimal_df['integer'].astype('Int64') table = pb.to_sql( minimal_df, table_name='sample', con=empty_db, how=how, auto_index=True, ) # print(table.columns) assert table.columns[PANDABASE_DEFAULT_INDEX].primary_key assert pb.has_table(empty_db, 'sample') loaded = pd.read_sql_table('sample', con=empty_db, index_col=PANDABASE_DEFAULT_INDEX) # pandas doesn't know about default index loaded.index.name = None # pandas doesn't know stored as UTC w/o timezone info loaded.date = pd.to_datetime(loaded.date, utc=True) assert pb.companda(loaded, minimal_df, ignore_index=True)
def test_create_select_table_index(session_db, simple_df, constants): """add a new table with explicit index, read it back with pandabase, check equality""" table = pb.to_sql(simple_df, table_name='sample', con=session_db, how='create_only') # print(table.columns) assert table.columns[constants.SAMPLE_INDEX_NAME].primary_key assert pb.has_table(session_db, 'sample') loaded = pb.read_sql('sample', con=session_db) assert pb.companda(loaded, simple_df, ignore_all_nan_columns=True)
def test_create_read_table_no_index(empty_db, minimal_df): """add a new minimal table & read it back with pandabase""" table = pb.to_sql(minimal_df, table_name='sample', con=empty_db, how='create_only', auto_index=True, ) # print(table.columns) assert table.columns[PANDABASE_DEFAULT_INDEX].primary_key loaded = pb.read_sql('sample', con=empty_db) assert pb.has_table(empty_db, 'sample') assert pb.companda(loaded, minimal_df, ignore_index=True)
def test_append_auto_index(empty_db, minimal_df): """add a new minimal table; add it again""" pb.to_sql(minimal_df, table_name='sample', con=empty_db, auto_index=True, how='create_only') table2 = pb.to_sql(minimal_df, table_name='sample', con=empty_db, auto_index=True, how='append') assert table2.columns[PANDABASE_DEFAULT_INDEX].primary_key loaded = pb.read_sql('sample', con=empty_db) assert pb.has_table(empty_db, 'sample') double_df = pd.concat([minimal_df, minimal_df], ignore_index=True) assert pb.companda(loaded, double_df, ignore_index=True) assert len(loaded) == len(minimal_df) * 2
def test_create_read_table_with_different_index(session_db, simple_df, table_name, index_col_name): """create new tables in empty db, using different col types as index, read with pandabase""" orig_df = simple_df.copy() orig_df.index = orig_df[index_col_name] print(orig_df[index_col_name]) print(orig_df.index) orig_df = orig_df.drop(index_col_name, axis=1) table = pb.to_sql(orig_df, table_name=table_name, con=session_db, how='create_only') assert table.columns[index_col_name].primary_key assert pb.has_table(session_db, table_name) loaded = pb.read_sql(table_name, con=session_db) c = pb.companda(loaded, orig_df, ignore_all_nan_columns=True) if not c: raise ValueError(c.message)
def test_create_table_with_different_index_pandas(session_db, simple_df, table_name, index_col_name): """create new tables in empty db, using different col types as index, read with Pandas""" df = simple_df.copy() df.index = df[index_col_name] df = df.drop(index_col_name, axis=1) table = pb.to_sql(df, table_name=table_name, con=session_db, how='create_only') assert table.columns[index_col_name].primary_key assert pb.has_table(session_db, table_name) # read with PANDAS loaded = pd.read_sql_table(table_name, con=session_db, index_col=index_col_name) # make an integer index, since pd.read_sql_table doesn't know to do this new_index = loaded.index.name loaded[new_index] = loaded.index if isinstance(loaded[new_index].iloc[0], str): print('converting') loaded[new_index] = loaded[new_index].apply(lambda x: float(x)) loaded.index = loaded[new_index] loaded = loaded.drop(new_index, axis=1) # pandas doesn't know about UTC if 'date' in loaded.columns: print('converting date to UTC') loaded.date = pd.to_datetime(loaded.date, utc=True) else: print('making new UTC index (Fake!)') loaded.index = df.index c = pb.companda(loaded, df, ignore_all_nan_columns=True) if not c: raise ValueError(c.message)