PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Pandas - write_frame para sqlite - datetime64[ns]


Você está certo de que o campo datetime64 está causando os problemas. O SQLite não tem um tipo de data e hora real, mas usa tipos de texto ou inteiro para representar horas (consulte http:// www.sqlite.org/datatype3.html e http://www.sqlite.org/lang_datefunc.html ).

Portanto, dependendo do que você deseja fazer, primeiro você pode converter sua coluna de data e hora em uma string:
df['field2'] = df['field2'].apply(str)

ou para um int (o número de segundos desde 1970-01-01 00:00:00 UTC):
df['field2'] = df['field2'].astype('int64')

e, em seguida, grave seus dados no sqlite.

Notas laterais:
  • Qual ​​versão dos pandas você está usando? Porque na versão 0.13 (ou abaixo) há um bug no if_exists='replace' implementação, que foi corrigida em 0.13.1 (última versão estável no momento)
  • No próximo pandas 0.14, haverá uma nova implementação das funções sql baseadas em sqlalchemy, e lá a conversão para uma string acontecerá automaticamente (portanto, não haverá mais erros para dados datetime64).