Определение типа данных при использовании pandas .to_ sql () - PullRequest
1 голос
/ 06 мая 2020

Я пишу pandas Dataframe в базу данных с красным смещением, используя pandas.to_sql() так:

from sqlalchemy import create_engine
import pandas as pd

conn = create_engine('postgresql://user:password@redshift-url.amazonaws.com:5439/db')

dataframe.to_sql('table_name', conn, index=False, if_exists='replace', schema='schema_name')

В этом кадре данных у меня есть столбец timestamp, который выглядит так 2020-03-02, но когда Я пишу его в db, он сохраняется как varchar, и я не могу использовать этот столбец для построения графиков, требующих формата timestamp.

Есть ли способ определить тип столбца при записи данных в db с помощью pandas .to_ sql ()? Я не хочу создавать представление или другую таблицу из той, которую я пишу, потому что тогда мне нужно будет удалить текущую таблицу, поскольку другая будет связана с исходной, и я получу сообщение об ошибке cant drop table because other objects depend on it.

1 Ответ

0 голосов
/ 06 мая 2020

используйте sqlalchemy.types

для столбца метки времени:

from sqlalchemy import types 

sql_types =  {'date' : types.TIMESTAMP(0)}

затем измените вызов dataframe.to_sql, чтобы включить следующий kwarg.

dataframe.to_sql('table_name', conn, index=False, 
                if_exists='replace', schema='schema_name',
                dtype=sql_types)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...