У меня есть pandas
Dataframe
с индексом типа datetime64[ns]
.когда я использую метод to_sql
, я ожидаю, что индекс будет создан как столбец timestamp
postgres, однако он создает столбец timestamptz
.
с чего бы это?
Обратите внимание, что когда столбец datetime64[ns]
является не индексом, а обычным столбцом, этого не происходит.
pandas 0.23.4, psycopg2 2.7.4, sqlalchemy 1.2.7, PostgreSQL 9.6.6
пример
dates = pd.date_range('2018-01-01', periods=5, freq='6h')
df_test = pd.DataFrame({'nums': range(5)}, index=dates)
nums
2018-01-01 00:00:00 0
2018-01-01 06:00:00 1
2018-01-01 12:00:00 2
вставка в postgres
df_test.to_sql('foo_table',postgres_uri,schema='data_test',index_label='info_date')
при чтении из базы данных я получаю индекс с другим типом
df_db = pd.read_sql_table('foo_table',postgres_uri,schema='data_test',index_col='info_date')
nums
info_date
2018-01-01 00:00:00+00:00 0
2018-01-01 06:00:00+00:00 1
2018-01-01 12:00:00+00:00 2
Как видите, info_date
имеет тип datetime64[ns, UTC]