PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Panda - write_frame su sqlite - datetime64[ns]

Hai davvero ragione sul fatto che il campo datetime64 sta causando i problemi. Sqlite non ha un tipo di data e ora reale, ma usano tipi di testo o interi per rappresentare i tempi (vedi http:// www.sqlite.org/datatype3.html e http://www.sqlite.org/lang_datefunc.html ).

Quindi, a seconda di cosa vuoi fare, puoi prima convertire la tua colonna datetime in una stringa:

df['field2'] = df['field2'].apply(str)

o a un int (il numero di secondi da 1970-01-01 00:00:00 UTC):

df['field2'] = df['field2'].astype('int64')

e poi scrivi i tuoi dati su sqlite.

Note a margine:

  • Che versione di Panda stai usando? Perché nella versione 0.13 (o inferiore) c'è un bug in if_exists='replace' implementazione, che è stata corretta in 0.13.1 (l'ultima versione stabile al momento)
  • Nei prossimi panda 0.14, ci sarà una nuova implementazione delle funzioni sql basate su sqlalchemy, e lì la conversione in una stringa avverrà automaticamente (quindi non errori più per i dati datetime64).